我在UITextView
内放置了UITableViewCell
。用户点击某个按钮后,我会调用[UITableView relodaData]
更新UITextView
内的内容。
我的目标是在调用reloadData之后在UITextView
内设置选择。是否有[UITableView reloadData]
方法可用的回调方法,就像performBatchUpdates
可用的方法一样
UICollectionView
。
答案 0 :(得分:1)
重新加载表视图通常不会让第一响应者辞职。必须是代码中的内容,例如cellForRowAtIndexPath
。
无论如何,要恢复丢失的焦点,请跟踪哪个textView正在编辑(如果只有一个,它更简单),请在调用reloadData
之前记住它并在此之后恢复光标。
- (void)textViewDidBeginEditing:(UITextView *)textView {
_currentEditingTextView = textView;
}
- (void)textViewDidEndEditing:(UITextView *)textView {
_currentEditingTextView = nil;
}
- (void)yourUpdate {
UITextView *editingTextView = _currentEditingTextView;
[tableView reloadData];
[editingTextView performSelector:@selector(becomeFirstResponder)
withObject:nil
afterDelay:0.1]
}
此外,如果您只需要更新一个单元格,请按reloadRowsAtIndexPaths
方法执行此操作。或者,如果您只需要更新textview的文本,请直接执行此操作:
((YourCellClass *)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:yourRow inSection:0]]).textView.text = ...;