请耐心听我说,这是一个很难描述的问题。我有两个 UICollectionViews:MainCollectionView 和 NestedCollectionView。 MainCollectionViewCell
包含一个 UILabel
和 NestedCollectionView
。反过来,NestedCollectionViewCell
包含 UILabel
或 UITextfield
。是否显示 UILabel
或 UITextfield
取决于 NestedCollectionViewCell
的内容。
我的问题如下:当用户选择 NestedCollectionViewCell
并将内容设置为显示 UITextfield
时,会显示用于用户输入的键盘。这是预期的结果。
但是,当用户输入一些文本然后滚动到 MainCollectionView
中的另一个单元格时,NestedCollectionView
会重置,并且 UITextfield.text
设置为默认值。换句话说,输入的文本不会被保留。
有什么建议可以解决这个问题吗?
最佳答案
您在UITextField
中输入的文本会丢失,因为每当您滚动UITableView
时,它都会自动销毁不再可见的单元格,这也是更好的内存管理所必需的否则你的应用程序将消耗更多内存。因此,当您返回到之前的单元格时,您已经新生成了 UITalbeViewCell
。所以你的数据丢失了,因为你没有持久化它。
因此,作为解决方案,每当您的 textFieldDidEndEditing
调用或每当您关闭键盘时,将您的 UITextField
值存储到某个对象中,并在您的 cellForRowAtIndexPath
方法中检查对象是否具有值,然后将其填充到您的 UITextField
。
通过这种方式,您始终可以保留之前输入的值。
关于ios - UICollectionView 不保留 UITextfield 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50402775/