我有一个表视图,其中方法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
答案 0 :(得分:1)
这是预期的行为。
UITableView中的行是智能加载的,只加载那些在屏幕上可见的行,其他行将在滚动后加载。
这是因为alloc
(在内存中创建对象)成本很高。因为这个iOS只创建了几个单元格然后再循环它们。