gpt4 book ai didi

ios - 检测 tableView reloadData 完成的新解决方案?

转载 作者:行者123 更新时间:2023-11-29 03:58:07 25 4
gpt4 key购买 nike

我需要检测 TableView 何时完成重新加载数据。有一个较旧的解决方案,您可以对 tableview 进行子类化,然后重载 reloadData 方法,但显然这不再有效,因为表现在是在多个线程上处理的,并且 reloadData 在 cellForRowAtIndexPath 之前调用。

我的问题是,更改后这个问题有解决方案吗?

我的问题是,当表重新加载其数据时,我丢失了指向文本字段的指针,因此我尝试设置到下一个文本字段(以自动聚焦于下一个数据输入字段)的第一个响应者丢失了。

最佳答案

这本质上是@wain 答案的重复,但我想我应该添加一些代码。

您可以保留对拥有事件文本字段的单元格的索引路径的引用(作为属性)。

然后,在 cellForRowAtIndexPath 中:类似这样:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";

MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

//I would hold a reference to the text field as a property on a subclass of UITableViewCell so that you can check for whether it exists.

if (!cell.textField) {

cell.textField = [[UITextField alloc] initWithFrame:cell.contentView.frame];

[cell.contentView addSubview:cell.textField];
}

return cell;
}

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
UITableViewCell *cell = (UITableViewCell *)textField.superview.superview;

NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

self.indexPathForActiveTextField = indexPath;
}

- (BOOL) textFieldShouldReturn:(UITextField *)textField
{
MyTableViewCell *cell = (MyTableViewCell *)textField.superview.superview;

NSIndexPath *ip = [self.tableView indexPathForCell:cell];

[self.tableView reloadData];

NSIndexPath *nextIndexPath = [NSIndexPath indexPathForRow:ip.row+1 inSection:ip.section];

MyTableViewCell *theNewCell = (MyTableViewCell *)[self.tableView cellForRowAtIndexPath:nextIndexPath];

if (theNewCell) {

[theNewCell.textField becomeFirstResponder];
}

return YES;
}

关于ios - 检测 tableView reloadData 完成的新解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com