在UITableView中快速滚动并选择单元格时,textfield委托将indexPath返回为nil并崩溃

时间:2016-11-16 03:16:00

标签: ios uitableview uitextfield swift3 uitextfielddelegate

我有TableViewController的结构(提及授权用途):

----View
-----Scroll View
------Content View
-------TableView
--------TableViewCell

我可以正确加载TableView的所有行和部分。每个TableViewCell都有一个可编辑的UITextField。当用户开始编辑UITextField时,我需要能够检索用户键入的内容。要更新正确的数据集,我目前的方式是检索indexPath

UITextField

我的问题是:当我慢慢滚动并逐一点击UITextField时,我不会崩溃。但是,如果我单击一个单元格并快速向下滚动(即使我保持相同的section),由于indexPath为空,我崩溃了。

在我的代表中我有这个:

func textFieldDidEndEditing(_ textField: UITextField) {
    //here is the code I am using to determine the indexPath
    let view = textField.superview!
    let cell = view.superview as! UITableViewCell
    let viewController = ShowPointsViewController() //this is the name of my ViewController
    let textFieldIndexPath = PointSourcesTV.indexPath(for: cell) //this is the name of my TableView

    print(textFieldIndexPath) //Returns nil here if I scroll too quickly
    let key = tableHeaders[(textFieldIndexPath?.section)!]
}

1 个答案:

答案 0 :(得分:1)

我不确定您是否使用正确的方法来获取indexPath的{​​{1}}并且可能导致崩溃。但您可以尝试使用UITextField中的内容,将cellForRowAtIndexPath的标记设置为UITextField,然后使用 -

获取单元格实例
indexPath.row