如何不重用UITableViewCell,并保持它们从视图中消失后的内存中的单元格?
我有一个“不那么大”的动态tableView,其行数可以在10到20之间变化。如何不重用UITableViewCell,并保持它们从视图中消失后的内存中的单元格?
我使用了Storyboard并创建了4个不同的单元格原型,它们都有自己的标识符。大多数这些单元格中有UITextFields
,用户将输入诸如电子邮件地址等信息。
我使用dequeueReusableCellWithIdentifier:
在tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
中创建我的单元格。
然而,每当我滚动我的tableView我可以看到,出现细胞得到上层单元中的数据,因为那消失的细胞排队重用。
鉴于我的单元数量有限,我想摆脱重复使用的功能,只让我的单元格内有自己的数据。当我向下滚动时,我看到对应于较低单元格的单元格,并且当我返回时,再次看到我的较高单元格。
我该怎么做? 以及如何才能创建一个单元格,而不使用dequeueReusableCellWithIdentifier:
就可以创建与故事板中的原型相对应的单元格?
我已经在这里StackOverflow的类似的问题中搜索,并试图让我的单元阵列,就回到正确的元素,如果它已经从tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
存在,但没有奏效到目前为止
你得太多这一点。如果你考虑dequeueReusableCellWithIdentifier:
做什么,它只是抓住它找到的具有该特定标识符的单元格。如果你想让每一行都有它自己的独特单元格,而不是其他任何行使用的单元格,只需给每行赋予它自己的标识符即可。最简单的方法是只对stringPath行进行字符串化,或者如果有多个节,则对row +节进行字符串化。
像这样的东西应该这样做:
let cellIdentifier = String(indexPath.section) + "-" + String(indexPath.row)
是的,但我需要在故事板中设置的内容样式,它来自标识符。 –
啊,那么答案是,你可能无法做你想做的事情。你应该设置这些单元格,当它们像通常那样被重用时正常工作,然后你就不会有任何问题。你需要帮助吗? – Dima
最后,保留了我的数据的副本,并在重新创建时将其放回单元格。我懒得这样做,并希望看看是否有解决方法,但最后我终于有所作为:) –
在这种情况下,我通常会创造什么将是它自己的视图控制器或自定义视图表视图单元格的内容,像“SignupFormViewController”并将其作为属性存储在管理您的表视图的视图控制器上。在你的情况下,这可能也是这种类型的多个视图控制器在几个属性或数组中。然后按照正常方式将您的单元出列,但将它们视为视图控制器的视图添加为子视图的哑容器。然后,您只需将所有松散的末端捆绑在一起 - 当单元格出列时从单元格中移除视图,如果相同视图已经是单元格的子元素,则不添加视图,匹配单元格大小的约束等。
'但没有任何工作到目前为止'张贴你已经尝试过。 –