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