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