在下面的代码中,我想在删除单元格时执行一些数据库操作,因此我需要发送有关要删除的单元格的服务器信息。如果我没记错的话,永远不应该直接调用cellForRowAtIndexPath,但我想不出任何其他方法来获取下面方法中的单元格信息,所以我的问题是:
在下面手动调用cellForRowAtIndexPath是否可以接受:
[tableView cellForRowAtIndexPath:indexPath]);
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[localGlobalNotifications removeObjectAtIndex:indexPath.row];
[notificationTableView beginUpdates];
[notificationTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
[self postLeaveRequest];
NSLog(@"Row is : %@", [tableView cellForRowAtIndexPath:indexPath]);
[notificationTableView endUpdates];
}
}
澄清:我理解我可以通过调用reloadData来调用cellForRowAtIndexPath的委托调用,我正在尝试做的是访问commitEditingStyle中被删除的单元格。我不是要重新加载我的tableView,而是想要获取对被删除单元格的引用。 - 通过直接调用cellForRowAtIndexPath获取对所述单元格的引用是否可接受?
答案 0 :(得分:1)
要求TableView为您提供单元格没有任何问题,就像您在示例代码中一样。
以下是返回值的文档:
表示表格单元格的对象,如果单元格不可见或indexPath超出范围,则为nil。
如果你用'模型'数据注释单元格,那么我认为你打破了MVC模式。您的视图不需要以这种方式了解模型数据,因此查询视图以进行数据库更改将使您将来的生活变得困难(例如可读性,可扩展性和可重用性)
最好将数据库元数据存储在一个集合中,例如NSArray或NSArray的NSArray。
然后,您可以使用以下内容获取所需的所有数据:
id modelData = myModel[indexPath.section][indexPath.row];
答案 1 :(得分:0)
是的,你可以使用cellForRowAtIndexPath:
,因为他们也在苹果docs中使用,或者您可以创建一个单元格数组,然后您可以从那里删除它并将其反映在您的数据库中。
答案 2 :(得分:-1)
您可以使用以下行调用cellForRowAtIndexPath:方法,此处它将自动调用所有委托和数据源方法。
[tableView reloadData];
或
[tableViewObjct reloadData];
希望这能解决你的问题!