早上好。
我在3.1应用程序中遇到了表格视图的小危机。我有一个表视图,其中一些复杂的tableViewCells是从一个nib加载的,并且它们没有被重用。感觉它可能与从笔尖加载它们有关,我决定尝试一个简单的测试项目,看看是否只使用基本的苹果模板代码重用单元格。我从基于导航的模板开始,这里是cellForRowAtIndexPath的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell.
cell.textLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];
return cell;
}
我在下一行设置了断点,并且每次传递都会调用它。
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]
在构造函数中设置reuseIdentifier:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"] autorelease];
}
产生相同的结果,没有细胞重复使用。
提前感谢您提供的任何帮助!
答案 0 :(得分:2)
该表通常会在需要开始重用之前创建并使用一些单元格(通常为5个左右)。这当然取决于它们的大小以及在任何给定时间在屏幕上显示的数量。没有什么可担心的。
答案 1 :(得分:2)
每次应用程序打开时,我都不确定您的意思是什么?
使用对象分配工具运行代码,并在滚动查看tableview时查看对象分配图。如果对象分配即使在几次滚动之后也会线性增加。那你就有问题了。
答案 2 :(得分:-1)
尝试使CellIdentifier静止,例如
static NSString *CellIdentifier = @"Cell";