我遇到了iPhone如何在表中重复使用Cell的问题。问题是该类的实现方法也被“重用”,并且一个单元格中的更改将应用于其他重用的单元格。我有一个进度指示器,只能在用户交互后在一个单元格中更新,但进度指示器更新,方法也在第6个单元格内运行。它也发生在第2和第7个细胞上。
我知道不重复使用任何单元格对内存不利,但在这个应用程序中,无论如何都不会有超过7个单元格。
CustomTableCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];
不起作用。如果我滚动一秒钟然后回来,Cell将恢复正常,所有已发生的更新都会重置。我想,细胞会自行摧毁并再次被吸引。
我需要知道是否有一种快速,轻松的方式让iPhone只是单独绘制每个单元格而不重复使用任何单元格。有没有办法可以使用快速迭代或for循环为dataSource中的每一行创建一个单独的单元格?
请允许我重申一下,在给定的viewController上,我不会在一个表中包含任何超过7或8个单元格。
答案 0 :(得分:2)
如果你真的想这样做...在viewDidLoad中设置一个7或8长的数组。做一个[[UITableView alloc] initWithStyle:UITabeViewCellStyle… reuseIdentifier:@"whatever"]
7或8次,然后在cellForRowAtIndexPath
中,从数组返回单元格。您应确保使用dealloc
方法释放单元格数组。
答案 1 :(得分:0)
如果你只使用7行 - reuseIdentifyer是没用的。它是如何工作的?想象一下,你正在滚动一些有很多行的表。有一刻,当其中一行被隐藏而另一行将被展示时。只有这样,表才能通过reusecellidentifyer获取单元格。它不为另一个单元分配内存。它会将您隐藏的行用于显示新行。对不起我的英文)
答案 2 :(得分:0)
最终为我工作的是以编程方式进行布局。使用TableViewCells的界面构建器只是错误。创建一个具有大量CGRect和框架属性的TableViewCell类和layoutSubviews方法是它的工作原理。即使单元格被重用,实际数据也不会覆盖。