UICollectionView 不保持 UITextfield 输入

UICollectionView Not Keeping UITextfield Input

请耐心等待,因为这是一个很难描述的问题。我有两个 UICollectionViewsMainCollectionViewNestedCollectionViewMainCollectionViewCell 包含 UILabelNestedCollectionView。反过来,NestedCollectionViewCell 持有 UILabelUITextfield。显示 UILabel 还是 UITextfield 取决于 NestedCollectionViewCell 的内容。

我的问题如下:当用户选择 NestedCollectionViewCell 并且内容设置为显示 UITextfield 时,会出现一个用于用户输入的键盘。这是预期的。

但是,当用户输入一些文本然后滚动到 MainCollectionView 中的另一个单元格时,NestedCollectionView 会重置并且 UITextfield.text 会设置为默认值。换句话说,不保留输入的文本。

有什么建议可以解决这个问题吗?

您在 UITextField 中输入的文本丢失了,因为每当您滚动 UITableView 它会自动销毁不再可见的单元格,这也是更好的内存管理所必需的,否则您的应用程序将消耗更多内存。所以当你回到你之前的单元格时,你已经新生成了 UITalbeViewCell。所以你的数据丢失了,因为你没有持久化。

因此,作为解决方案,无论何时调用 textFieldDidEndEditing 或关闭键盘,都会将 UITextField 值存储到某个对象中,并在 cellForRowAtIndexPath 方法中检查对象是否具有值,然后填充它到你的 UITextField.

通过这种方式,您始终可以保留之前输入的值。