【发布时间】:2015-10-21 11:34:32
【问题描述】:
我在导航控制器中有一个 tableview 控制器。此表仅在每一行中显示一个文本字段。在我的导航控制器中,我有一个“完成”导航项,它获取在文本字段中输入的所有值并显示下一个屏幕。
tableview 控制器实现 UITextFieldDelegte 和 textFieldDidEndEditing 以将每个文本字段的值存储在其数据源(字符串数组)中。在 cellForRowAtIndexPath 中,我还将文本字段的委托分配给自己。如果我点击不同的文本字段,这一切都很好,我会看到数据源是如何正确更新的。
我的问题是当我执行此序列时:在一个文本字段中输入一个值,然后点击“完成”导航项。我看到未调用 textFieldDidEndEditing ,因此未存储该值。我也尝试了 textFieldShouldReturn 和 textFieldShouldReturn 但没有。
我已经阅读了许多类似的帖子,我认为问题在于“事件”被 prepareForSegue 而不是 textFieldDidEndEditing 捕获。如果这是正确的,我不知道如何处理这个问题,因为我不知道如何在点击 Done 时识别“最后编辑的文本字段”的 indexPath。
另一个相关问题:当调用 textFieldDidEndEditing 时,我已经看到了两种方法来获取包含文本字段的单元格的 indexPath:
1) textField.convertPoint + tableView.indexPathForRowAtPoint
2) tableView.indexPathForCell + textField.superview
两者似乎都运行良好,没有差异(我刚才提到的问题除外)。有什么方法比另一种更好吗?
非常感谢您的帮助!!!
PS:如果可能,请使用 Swift 代码!
【问题讨论】:
标签: ios uitableview uitextfield