UITableView代理cellForRowAtIndexPa

2018-12-27  本文已影响0人  frola_

今天在项目中突然遇到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 ]];
上一篇 下一篇

猜你喜欢

热点阅读