【问题标题】:IOS Swift how can stop re-creating cells on drag or scroling in tableviewIOS Swift如何停止在tableview中拖动或滚动时重新创建单元格
【发布时间】:2015-07-01 07:23:26
【问题描述】:

我正在使用带有文本字段的自定义单元格创建一个表格视图。当我在 tableviewcell 文本字段中输入文本并且当我滚动 tableview 时,数据正在发生变化。意味着重新画细胞。如何在 IOS 8 swift 中停止在拖动或滚动时重新加载单元格 谢谢

【问题讨论】:

  • 这是预期的行为,以优化滚动大型列表的 cpu/内存压力。

标签: xcode swift ios8 xcode6


【解决方案1】:

如果您不想重复使用您的单元格,请尝试将其设置为具有唯一标识符的 UITableViewCell 的子类,并且不要将该标识符用于其他单元格。我还没有测试它,只是希望它能解决你的问题。

附言。如果文本字段的文本仍然被覆盖,请检查单元格的类文件(例如使用 if-else 语句检查文本字段的文本是否为空)。

详细的工作流程: 在 cellForRowAtIndexPath() 中,在您将单元格出列后,通常您将设置自定义单元格的某些属性以刷新其保存的数据。要实现这一点,您需要在单元的类文件的属性上添加一个 didSet 观察者。为了达到你想要的目标,你还可以在didSet观察者中添加检查代码。

【讨论】:

  • 对不起,我不明白我该怎么做?
  • @damodarpatel 你是说第二部分?我已经编辑了我的答案。
【解决方案2】:

在你的情况下。您需要自定义键盘。 在键盘顶部添加 [Prev][Next] 按钮,避免滚动。

基本上,这个想法在基于表单的应用程序中很有用。可能是你做的那种。

是的,停止重新加载单元格对应用程序不利。如果你将实现这一点。 Apple 不会批准您的应用程序。所以避免这种东西。

【讨论】:

    【解决方案3】:

    这就是单元格在 UITableView 中的工作方式。 cellForRowAtIndexPath: 方法的标准实现将单元出列并重用它们。

    理想情况下,您的应用应保存文本字段中的文本,并根据其 indexPath 在同一方法的实现中更改单元格中的正确文本。

    如果您不想这样做,dirty 解决方法是每次在 cellForRowAtIndexPath: 方法中创建一个新单元格,而不是使行出队。*

    *除非绝对必要,否则不要这样做。这是非常糟糕的编码习惯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多