【发布时间】:2015-07-01 07:23:26
【问题描述】:
我正在使用带有文本字段的自定义单元格创建一个表格视图。当我在 tableviewcell 文本字段中输入文本并且当我滚动 tableview 时,数据正在发生变化。意味着重新画细胞。如何在 IOS 8 swift 中停止在拖动或滚动时重新加载单元格 谢谢
【问题讨论】:
-
这是预期的行为,以优化滚动大型列表的 cpu/内存压力。
我正在使用带有文本字段的自定义单元格创建一个表格视图。当我在 tableviewcell 文本字段中输入文本并且当我滚动 tableview 时,数据正在发生变化。意味着重新画细胞。如何在 IOS 8 swift 中停止在拖动或滚动时重新加载单元格 谢谢
【问题讨论】:
如果您不想重复使用您的单元格,请尝试将其设置为具有唯一标识符的 UITableViewCell 的子类,并且不要将该标识符用于其他单元格。我还没有测试它,只是希望它能解决你的问题。
附言。如果文本字段的文本仍然被覆盖,请检查单元格的类文件(例如使用 if-else 语句检查文本字段的文本是否为空)。
详细的工作流程: 在 cellForRowAtIndexPath() 中,在您将单元格出列后,通常您将设置自定义单元格的某些属性以刷新其保存的数据。要实现这一点,您需要在单元的类文件的属性上添加一个 didSet 观察者。为了达到你想要的目标,你还可以在didSet观察者中添加检查代码。
【讨论】:
在你的情况下。您需要自定义键盘。 在键盘顶部添加 [Prev][Next] 按钮,避免滚动。
基本上,这个想法在基于表单的应用程序中很有用。可能是你做的那种。
是的,停止重新加载单元格对应用程序不利。如果你将实现这一点。 Apple 不会批准您的应用程序。所以避免这种东西。
【讨论】:
这就是单元格在 UITableView 中的工作方式。 cellForRowAtIndexPath: 方法的标准实现将单元出列并重用它们。
理想情况下,您的应用应保存文本字段中的文本,并根据其 indexPath 在同一方法的实现中更改单元格中的正确文本。
如果您不想这样做,dirty 解决方法是每次在 cellForRowAtIndexPath: 方法中创建一个新单元格,而不是使行出队。*
*除非绝对必要,否则不要这样做。这是非常糟糕的编码习惯
【讨论】: