Ios tableView重新加载数据丢失文本字段焦点

Ios tableView重新加载数据丢失文本字段焦点,ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,我有一些带有文本字段和其他标签的单元格。基本上,在用户用键盘输入数据后,他们可以导航到另一个textfield(通过各种方式),我将他们希望访问的textfield保存在指针中,然后设置触发textfield的DiEndEditing方法的第一响应程序。在DiEndediting中,我调用了一个刷新方法,该方法重新加载tableData以更新各种标签,然后我尝试将FirstResponder再次设置为我存储的文本字段 最终的结果是键盘停留在屏幕上,但文本字段没有获得焦点。但是,如果您再试一次,它

我有一些带有文本字段和其他标签的单元格。基本上,在用户用键盘输入数据后,他们可以导航到另一个textfield(通过各种方式),我将他们希望访问的textfield保存在指针中,然后设置触发textfield的DiEndEditing方法的第一响应程序。在DiEndediting中,我调用了一个刷新方法,该方法重新加载tableData以更新各种标签,然后我尝试将FirstResponder再次设置为我存储的文本字段

最终的结果是键盘停留在屏幕上,但文本字段没有获得焦点。但是,如果您再试一次,它将在第二次工作

下面是一些代码。请记住,已经删掉了很多关于计算和日志等的内容。我只添加了与此问题相关的内容

还有,我知道我提到我正在使用箭头按钮导航。。如果不使用箭头按钮,问题也会出现。离开另一个文本字段后,必须手动按(或单击)两次文本字段才能获得焦点

 //user presses an arrow button to enter textfield

 //logic is done here to find what the next textfield would be

 _nextTextFieldSelection = (UITextField *)[[_tableView cellForRowAtIndexPath:destinationIndexPath] viewWithTag:newTag];
[_nextTextFieldSelection becomeFirstResponder];


- (void)textFieldDidEndEditing:(UITextField *)textField
{
     //some stuff for calculations
     [self refreshScreen]
}

- (void)refreshScreen
{
    [_tableView reloadData]; 
    //set tables values

    [_nextTextFieldSelection becomeFirstResponder];
}

重新加载表格时,将重新创建单元格。缓存的
nextTextFieldSelection
可能不再是对正确文本字段实例的引用。尝试缓存indexPath而不是文本字段,然后使用标记从给定索引路径的单元格中获取适当的文本字段。

我也面临同样的问题-在tableview重新加载数据后失去焦点。
但在tableview重载数据方法之后添加cellForRowAtIndexPath解决了这个问题。这个答案已经在评论中给出了,但考虑在这里添加以获得更大的可视性。

另一个解决方案-使用
tableView.insertRows(at:indexPaths,with:.automatic)

«很多内容都被删掉了,用于处理计算和日志等。我只添加了与此问题相关的内容。»我能得到阿门吗!如果在表视图重新加载后是另一个文本字段,我不会感到惊讶。尝试通过
[[u tableView cellForRowAtIndexPath:destinationindepath]viewWithTag:newTag]再次获取引用
重新加载数据
之后立即执行,然后查看它是否仍然是与
\u nextTextFieldSelection
相同的对象。这很有意义,我会试试看。你的解决方案很有效,Josh,尽管我无法选择你的答案,因为你将其作为注释。呃,我已经有足够的代表性了。很高兴我能帮忙。