无法使用Three20删除表中的行

时间:2009-09-06 01:28:18

标签: iphone uitableview three20

我有一个按钮可以在TTTableView上切换setEditing。以前我一直在使用“常规”UITableView和以下方法来实际删除数据,但我在Three20类中看不到任何类似的东西,并且在按下删除按钮时不会调用我的方法行。

  • (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { //做工作}

我一定错过了一些东西,但我无法弄明白。似乎TTTableViewController中的setEditing没有连接到任何东西。有一个didDeleteObject方法,但我不知道这是否应该替代上述方法。任何意见都将不胜感激。

1 个答案:

答案 0 :(得分:7)

您使用TTTableViewController的体验也会与您预期的略有不同,因为

}。与大多数具有表视图控制器的iPhone教程也实现UITableViewDelegateUITableViewDataSource协议不同,Three20通过单独的类实现它们:您需要使用模型实例设置控制器的UITableViewController属性,并且控制器创建自己的委托(在dataSource方法中,您可以覆盖)。

您要实施的方法tableView:commitEditingStyle:forRowAtIndexPath:createDelegate协议的一部分,因此您需要在模型类上实现该方法,并且不在控制器本身上。

UITableViewDataSource不会直接对TTTableViewController执行任何操作,只会从UIViewController继承基本实现。

您看到的setEditing:animated:方法继承自model:didDeleteObject:,作为TTModelViewController协议的实现。它就在那里,对底层数据模型的更改可以通知视图层更改。例如,如果您的应用程序正在从Web下载数据,则行可能会一直显示和消失,与用户界面的操作无关。如果你试图通过用户界面进行编辑,你不应该搞砸。