不理解UITableView代理中这个方法,大神详解一下

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 这个方法是返回cell的行数,但是不理解,创建一个tableView,为什么这个方法会在创建cell之前,总是走三次,为什么会走三次?

numberOfRowsInSection
返回当前组有多少行,
走三次应该是你设置了有三个组.
编译器每创建一个组之前都要知道你这个组有多少行,有三个组就得获取三次,...

其实这个是UITabelView的数据源方法(dataSource),在这之前编译器会去调用另一个数据源方法:

  • (NSInteger)numberOfSectionsInTableView:(UITableView * )tableView; // Default is 1 if not implemented

去配置这个tableview有多少个section(也可以说是组),每个section包含着自己的cell,而后才会去调用:
(NSInteger)tableView:(UITableView * )tableView numberOfRowsInSection:(NSInteger)section

当然楼主说的调用了三次是因为这个tableview里被配置了3个section,每个section都需要配置自己的cell,数量可以相等亦可以不等,
而控制每个section的数量的操作就在numberOfRowsInSection这个数据源方法里面,根据方法参数(NSInteger)section,
可以做if else来分别处理不同的section。

希望帮到您

楼上都说了 。。。。。。

还有可能你代码里多处reloadData,默认走两次(一个section)