我有一个足够高的
标准的创建方法可能是在
我找到的解决方案建议使用
我在
这是一个合理的方法吗?可能会出现什么问题?是否有改进的余地(也许我仍然可以在
UITableView
,需要滚动才能显示。表格中最上面的单元格包含了一个 UITextField
,供用户输入文本。标准的创建方法可能是在
cellForRowAtIndexPath:
中创建并添加文本框,然后将其添加到一个已创建或回收的单元格中。然而,这种不断重新创建的方式导致当单元格被滚动出视图并再次进入视图时,文本框中输入的内容被抹掉。我找到的解决方案建议使用
UITextField
的委托来跟踪文本的变化,并将其存储在 iVar 或属性中。我想知道为什么推荐这种方式,而不是我正在使用的更简单的方法:我在
UITableViewController
的 init 方法中创建 UITextField
并立即将其存储在属性中。在 cellForRowAtIndexPath
中,我只需添加这个预先存在的文本框,而不是初始化一个新的文本框。单元格本身可以回收使用,但因为我总是使用唯一的 UITextField
,所以内容得以保留。这是一个合理的方法吗?可能会出现什么问题?是否有改进的余地(也许我仍然可以在
cellForRowAtIndexPath
中创建文本框,但首先检查属性是否为 nil)?