如果我将一个带有reuseidentifier = UITableViewCell
的固定nil
作为ivar并为特定行返回此实例,然后使用[tableView reloadRowsAtIndexPaths:withRowAnimation:]
专门重新加载此行,则行内容将消失(或有时闪烁)。当我向外滚动并返回时,它再次变得可见。另一方面,如果我[tableView reloadData]
,它就不会消失。
以下是一个示例项目:https://github.com/hannesoid/HOTableViewTests
我在iOS 6上测试了这个。 我知道通常不推荐以这种方式手动重用UITableViewCell(没有使用useidentifier& dequeueing),但在一些非常静态的情况下,它会简化事情。
答案 0 :(得分:1)
UITableView由Apple优化,因此它使用相当少的内存,但在屏幕上出现单元格时仍然具有良好的性能。当你做这样的非标准事件并绕过优化时,你就会把整个机器搞得一团糟。这是我的建议。如果您现在拥有一个特定的行作为实例变量,为什么不尝试为其reuseIdentifier赋予它唯一的名称?让套件解决。
答案 1 :(得分:0)
让reuseIdentifier
等于nil
不是一个好习惯。始终使用字符串/名称初始化reuseIdentifier
。 cellForRowAtIndexPath
通过查看reuseIdentifiers
来重新加载行。如果找到具有现有reuseIdentifier
的缓存单元格,则会直接显示这些单元格而不分配和初始化新单元格。使nil
导致问题。所以,制作reuseidentifier=@"cell"
或你喜欢的东西。这将解决您的问题。