我有一个代码
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.objectIdArray.count;
}
此方法返回7.我在调试模式下检查它。但是委托方法如
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// !!!!!!!!!!!!!
NSLog(@"%d\n",self.objectIdArray.count);
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"OrderListCell"];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"OrderListCell" owner:nil options:nil];
cell = [topLevelObjects lastObject];
[((OrderListCell *) cell).activityIndicatorView startAnimating];
}
((OrderListCell *) cell).delegate = self;
[((OrderListCell *) cell) prepareOrderListCell:[self.objectIdArray objectAtIndex:indexPath.row]];
return cell;
}
在日志7中写了6(!)次。任何解决方案?
答案 0 :(得分:3)
仅在显示单元格时调用cellForRowAtIndexPath。你确定7个单元格适合你的屏幕吗?
答案 1 :(得分:0)
尝试检查数组长度,然后验证对委托方法的调用。
答案 2 :(得分:0)
屏幕上可以看到多少个单元格? cellForRowAtIndexPath
方法仅调用即将显示的可见和单元格。如果你在tableview中向下滚动它也会被调用为lastone!