调用方法cellForRowAtIndexPath的计数错误

时间:2013-09-21 14:16:58

标签: ios uitableview

我有一个代码

    - (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(!)次。任何解决方案?

3 个答案:

答案 0 :(得分:3)

仅在显示单元格时调用cellForRowAtIndexPath。你确定7个单元格适合你的屏幕吗?

答案 1 :(得分:0)

尝试检查数组长度,然后验证对委托方法的调用。

答案 2 :(得分:0)

屏幕上可以看到多少个单元格? cellForRowAtIndexPath方法仅调用即将显示的可见和单元格。如果你在tableview中向下滚动它也会被调用为lastone!