今天在项目中突然遇到UITableView都调用,但是之前是可以调用的,数据源也没有问题,后来一点点排查发现时修改代码的时候,tableviewd的frame不对所以特意出一篇排查方案
1、是否设置代理源
tableView.dataSource = self;
tableView.delegate = self;
2、numberOfSectionsInTableView是否设置
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
3、numberOfRowsInSection方法返回值是否正确,如果不正确就不会执行 cellForRowAtIndexPath。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1;
}
4、检查tableView的frame
如果tableview的高度为nil,则不会调用tableview的代理方法
5、还有可能是autolayout引起的,autolayout约束不对,也会导致tableview显示不出来,
cellForRowAtIndexPath是在显示到界面的时候才调用,正确的设置autolayout就会执行该方法。
6、如果纯代码实现,并使用VFL布局参考以下写法
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-64-[table]-50-|" options:0 metrics:nil views:constraintsView ]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[table]-0-|" options:0 metrics:nil views:constraintsView ]];
网友评论