我有一个表格视图,它从当前包含 45 个项目的数组中填充自身。目标是最初显示 20 个,并在用户滚动到表格视图底部时逐渐显示 20 个以上的项目。
这是用信息填充单元格的方法。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if(!cell){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
}
cell.textLabel.text = [[listings objectAtIndex:indexPath.row] objectForKey:@"listingName"];
return cell;
}
下面是确定表格视图长度的方法:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if (listings.count < 20){
return listings.count;
}
return tableViewSize;
}
tableViewSize
是一个实例变量,我将其实例化为 20。每当用户滚动到底部时,我使用以下方法将其递增 20:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
if(indexPath.row == (listings.count - 1)){
tableViewSize += 20;
if(tableViewSize > listings.count){
tableViewSize = listings.count;
}
}
[tableView reloadData];
}
问题很奇怪。当我包含后一种方法tableView:willDisplayCell:forRowAtIndexPath:
时,表格视图只显示一个单元格(我无法分辨这是数组中的哪个对象,因为目前所有对象都是相同的。如果需要,我可以找出来)。如果我注释掉后一种方法,那么表格视图会正确显示 20 个单元格。
有谁知道为什么这种方法会导致表格视图以这种方式运行?