在UITableView reloadData之后在UITextView中设置选择?

时间:2013-09-05 06:25:01

标签: iphone ios objective-c uitableview

我在UITextView内放置了UITableViewCell。用户点击某个按钮后,我会调用[UITableView relodaData]更新UITextView内的内容。

我的目标是在调用reloadData之后在UITextView内设置选择。是否有[UITableView reloadData]方法可用的回调方法,就像performBatchUpdates可用的方法一样 UICollectionView

1 个答案:

答案 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 = ...;