2

我在每个表格视图单元格上都有一个手势识别器,当他们滑动一个时,我希望我的代表通知表格视图(或者如果有没有代表的更好方法,那么它可以被删除。但是我怎么知道单元格的indexPath或其他什么可以删除呢?

4

3 回答 3

7

使用委托是一个很好的模式。您的自定义单元类应该定义一个协议和一个委托属性。视图控制器应该将自己设置为单元的委托,并且视图控制器应该实现单元的协议方法。确保协议方法的参数之一是单元格。

如果需要,视图控制器可以向表格视图询问单元格的索引路径。单元不需要知道它的索引路径。由于可以添加/删除行和部分,因此告诉单元格其索引路径是不好的形式,因为它可能随时更改。

于 2013-05-02T22:01:04.697 回答
1

让您的单元格调用其委托,self然后在控制器中使用UITableView'sindexPathForCell:来查找适当的索引路径。

获得路径后,您可以使用它deleteRowsAtIndexPaths:withRowAnimation:来删除单元格。请记住也要对您的数据源进行相应的更改!

[self.tableView beginUpdates]
[someBackingArray removeObject:someModelObject];

[self.tableView deleteRowsAtIndexPaths:@[theIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];
于 2013-05-02T21:59:44.950 回答
0

获取superView,直到类为UITableView。

例如

id parent = [self superView];
if ([parent isKindOfClass:[UITableView class]) {
   // Got it!
}

注意:我不确定,但您可能需要再检查一个“向上”级别。即您可能需要获取上面的父对象的superView,直到您在层次结构中找到UITableView。

于 2013-05-02T21:52:36.503 回答