textFieldDidEndEditing未在导航控制器内的tableview中调用

Dav*_*ara 0 uitableview uitextfield ios

我在导航控制器中有一个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代码!

Kav*_*ita 5

点击完成按钮,你可以添加这一行,[self.view endEditing:YES]; 此行将重新签名您当前活动的文本字段,并将调用您的文本字段委托.

如果在这种情况下显示同一表部分中的所有文本字段,则可以将indexPath.row分配给textField.tag,并使用该标记创建indexPath.