我有UITableView
行数有限(让我们说20-30)。
是否可以禁用单元重用?
Most of solutions建议不要致电dequeueReusableCellWithIdentifier
。
但在这种情况下,每次UITableViewSource
需要新单元格时,都会创建该单元格的新实例。
我想要的是,一旦我向下滚动并看到所有20-30个单元格,在我回来的路上不应该创建新的单元格。
有可能吗?
答案 0 :(得分:3)
即使您使用唯一标识符,也不能依赖重用池大小足以存储您尝试执行的20-30个唯一单元格。
您需要在数组或字典中保留对单元格的引用,并使用它来获取cellForRowAtIndexPath
中的单元格 - 例如 -
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *cellIdentifier=[NSString stringWithFormat:@"Cell%d",indexPath.row];
UITableViewCell *cell=self.cellDictionary[cellIdentifier];
if (cell == nil) {
cell=[[MyCell alloc]init]; // Do whatever is required to allocate and initialise your cell
self.cellDictionary[cellIdentifier]=cell;
}
// Any other cell customisation
return cell;
}
除非细胞创建非常昂贵,否则重复使用通常是一种更好的方法
答案 1 :(得分:1)
我相信你可以为每个单元分配一个唯一的重用标识符(只是一个基于索引路径和行的字符串)。