ios tableview:行小于numberOfRowsInSection返回的计数

时间:2014-11-21 12:37:42

标签: ios uitableview

我有一个表视图,其中方法numberOfRowsInSection根据用户的需要正确返回。但是出现的实际行数小于numberOfRowsInSection返回的行数。细胞不是静止的。我没有对行数设置任何限制。我正在使用故事板,这可能是一个故事板问题。任何线索?

代码段:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

// Return the number of rows in the section.
if(self.timelineModel){
    NSMutableArray *sectionArray =  self.timelineModel[self.stepperValue];
    NSLog(@"no of rows : %lu",(unsigned long)sectionArray.count);
    return sectionArray.count;
}
else{
    return 1;
}
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
LTTimeLineTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"tableCell" forIndexPath:indexPath];

if (cell !=nil){
    //some code
}

//some code
cell.selectionStyle = UITableViewCellSelectionStyleNone;
[cell.rowCollView reloadData];
NSLog(@"row number : %ld",(long)indexPath.row);
return cell;
}

出现的日志是:

log 1: 
2014-11-21 17:28:25.937 xx[89937:1095174] no of rows : 6
2014-11-21 17:28:25.938 xx[89937:1095174] row number : 0
2014-11-21 17:28:25.939 xx[89937:1095174] row number : 1
2014-11-21 17:28:25.939 xx[89937:1095174] row number : 2
2014-11-21 17:28:25.940 xx[89937:1095174] row number : 3

log 2:
2014-11-21 17:07:54.932 xx[89937:1095174] no of rows : 5
2014-11-21 17:07:54.933 xx[89937:1095174] row number : 0
2014-11-21 17:07:54.933 xx[89937:1095174] row number : 1
2014-11-21 17:07:54.934 xx[89937:1095174] row number : 2
2014-11-21 17:07:54.937 xx[89937:1095174] row number : 3

1 个答案:

答案 0 :(得分:1)

这是预期的行为。

UITableView中的行是智能加载的,只加载那些在屏幕上可见的行,其他行将在滚动后加载。

这是因为alloc(在内存中创建对象)成本很高。因为这个iOS只创建了几个单元格然后再循环它们。