cellForRowAtIndexPath使用模式

时间:2013-08-28 07:11:38

标签: iphone ios uitableview uikit

在下面的代码中,我想在删除单元格时执行一些数据库操作,因此我需要发送有关要删除的单元格的服务器信息。如果我没记错的话,永远不应该直接调用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获取对所述单元格的引用是否可接受?

3 个答案:

答案 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];

希望这能解决你的问题!