如何从UITableViewCell子类通知UITableViewController事件?

时间:2013-05-02 21:49:37

标签: ios objective-c uitableview

我在每个表视图单元格上都有一个手势识别器,当他们刷一个时,我希望我的委托通知表格视图(或者如果有更好的方式没有代表,那么)可以删除它。但我如何知道单元格的indexPath或其他什么,以便可以删除?

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:1)

让您的单元格使用self调用其委托,然后在控制器中使用UITableView的{​​{1}}来查找相应的索引路径。

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

deleteRowsAtIndexPaths:withRowAnimation:

答案 2 :(得分:0)

获取superView,直到该类为UITableView。

e.g。

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

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