ios - UICollectionView 不保留 UITextfield 输入

标签 ios swift uicollectionview uitextfield uicollectionviewcell

请耐心听我说,这是一个很难描述的问题。我有两个 UICollectionViews:MainCollectionView 和 NestedCollectionView。 MainCollectionViewCell 包含一个 UILabelNestedCollectionView。反过来,NestedCollectionViewCell 包含 UILabelUITextfield。是否显示 UILabelUITextfield 取决于 NestedCollectionViewCell 的内容。

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

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

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

最佳答案

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

因此,作为解决方案,每当您的 textFieldDidEndEditing 调用或每当您关闭键盘时,将您的 UITextField 值存储到某个对象中,并在您的 cellForRowAtIndexPath 方法中检查对象是否具有值,然后将其填充到您的 UITextField

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

关于ios - UICollectionView 不保留 UITextfield 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50402775/

相关文章:

ios - 在swift 4中更改自动打印数字的某个字符串

ios - 从 iOS 应用程序在 Tumblr 上分享链接

ios - 如何访问 UIWebView 打开的内置媒体播放器?

ios - 执行 `layoutSubviews` 绘图_without_子类化 View ,而不是使用闭包?

ios - 如果我快速选择其中一项,如何删除所有数组

ios - Swift UICollectionViewCells 太分散了

ios - 如何在 swift (XCode 8) 中处理自定义 url 方案?

ios - 使用 NSNotificationCenter 设置 ivars?

swift - UIProgressView 在使用 animated = true 的 setProgress 期间变得透明

ios - 如何跨 collectionview 添加 View ?