gpt4 book ai didi

ios - 从 TableViewController 调用 moveRowAtIndexPath

转载 作者:行者123 更新时间:2023-11-28 18:20:52 24 4
gpt4 key购买 nike

我实现了 moveRowAtIndexPath:toIndexPath: 方法的主体,如下所示:

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
XYZToDoItem *itemToMove = [self.toDoItems objectAtIndex:fromIndexPath.row];
NSLog(@"Moving");
NSLog( itemToMove.itemName);

[self.toDoItems removeObjectAtIndex:fromIndexPath.row];
[self.toDoItems insertObject:itemToMove atIndex:toIndexPath.row];
}

我想从 TableViewController 的 didSelectRowAtIndexPath 方法中调用此方法。

当我这样做时,表格的行确实移动了,但上面的方法似乎没有执行。没有任何内容会记录到控制台,并且数组 toDoItems 中的项目不会交换。

这是该方法的主体:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSIndexPath *indexPathOfLastItem =
[NSIndexPath indexPathForRow:([self.toDoItems count] - 1) inSection:0];

[tableView moveRowAtIndexPath:indexPath toIndexPath:indexPathOfLastItem];
}

如何让 TableView 从委托(delegate)(TableViewController)中正确移动行?

最佳答案

通过代码(而不是通过用户交互)移动(或添加、删除)表格 View 行不会导致要调用的数据源方法。

如果需要数据源方法执行,需要显式调用:

// Move table view row:
[tableView moveRowAtIndexPath:indexPath toIndexPath:indexPathOfLastItem];
// Call data source method:
[self tableView:tableView moveRowAtIndexPath:indexPath toIndexPath:indexPathOfLastItem];

swift 3:

// Move table view row:
tableView.moveRow(at: indexPath, to: indexPathOfLastItem)
// Call data source method:
self.tableView.moveRow(at: indexPath, to: indexPathOfLastItem)

关于ios - 从 TableViewController 调用 moveRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20959111/

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