0

我有一个代码

    - (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 (!) 次。有什么解决方案吗?

4

3 回答 3

3

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

于 2013-09-21T14:24:10.200 回答
0

您的屏幕上可以看到多少个单元格?cellForRowAtIndexPath方法只调用即将显示的可见单元格和单元格。如果您在表格视图中向下滚动,它也会被称为最后一个!

于 2013-09-21T14:28:19.407 回答
0

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

于 2013-09-21T14:24:55.240 回答