我在运行时创建一个视图,并添加一个UITableView作为其子视图。 我还将tableview的委托定义为self。
但仍然没有调用UITableView Delegates
@interface cViewController:UIViewController
RouteShowView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
[RouteShowView setBackgroundColor:[UIColor blueColor]];
table = [[UITableView alloc] initWithFrame:CGRectMake(0, 50, 320, 410) style:UITableViewStylePlain];
table.delegate = self;
UIButton * Go = [UIButton buttonWithType:UIButtonTypeRoundedRect];
Go.frame = CGRectMake(0, 4, 70, 42);
[Go setTitle:@"<< BACK" forState:UIControlStateNormal];
[Go addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside];
[Go setBackgroundColor:[UIColor blackColor]];
[RouteShowView addSubview:table];
[RouteShowView addSubview:Go];
[self.view addSubview:RouteShowView];
答案 0 :(得分:2)
假设您在 .h 文件中添加了 UITableViewDelegate,UITableViewDataSource ...我认为您错过了 .m 文件中的此代码
table.dataSource = self;
答案 1 :(得分:1)
缺少的东西是
//.h file
@interface SimpleTableView : UITableView <UITableViewDelegate, UITableViewDataSource>
{
}
@end
// in .m file
table = [[UITableView alloc] initWithFrame:CGRectMake(0, 50, 320, 410) style:UITableViewStylePlain];
// set delegated object
table. delegate = self;
// set source for data
table.dataSource = self;
实现在UITableView
文档中定义的@required协议@protocol UITableViewDataSource<NSObject>
@required
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
答案 2 :(得分:0)
首先尝试通过xcode上的代码完成来检查委托方法,如果你在类中获得了适当的委托,xcode会自动检测你的委托方法。
我想你可能不会宣布
@interface SimpleTableView : UITableView <UITableViewDelegate, UITableViewDataSource>