我知道-[UITableViewDelegate tableView:willDisplayCell:forRowAtIndexPath:]
,但我想知道实际显示UITableViewCell
的时间。
我在UITextField
内有UITableViewCell
,在-[UIResponder becomeFirstResponder]
(因此UITableViewCell
)实际显示之前我无法致电UITextField
到目前为止,我可以做到这一点,但这是一个黑客攻击:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if ([indexPath isEqual:self.textFieldIndexPath]) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.textField becomeFirstResponder];
});
}
}
我还尝试覆盖-[UITableViewCell didMoveToSuperview]
,但只在第一次将UITableViewCell
添加到UITableView
时调用。当UITableViewCell
是(因为后备数据已更改)然后重新添加(因为后备数据再次更改,-[UITableViewCell didMoveToSuperview]
未被调用。我假设UITableView
只保留所有UITableViewCells
在其视图层次结构中,即使它没有显示它们。