什么';这是在UINavigationController层次结构中刷新UITableView的最佳方法 我对iPhone的开发很陌生,一直在努力寻找我认为是解决这个问题的方法。

什么';这是在UINavigationController层次结构中刷新UITableView的最佳方法 我对iPhone的开发很陌生,一直在努力寻找我认为是解决这个问题的方法。,iphone,uitableview,uinavigationcontroller,Iphone,Uitableview,Uinavigationcontroller,我有一个用户界面,其中记录数据的摘要显示在导航控制器内的表格中。当用户单击某行的附件按钮时,导航控制器上会显示一个新视图,用户可以在该视图中编辑相应记录中的数据。完成后,编辑视图将从导航控制器的堆栈中弹出,用户将返回到表视图 我的问题是,当用户返回到表视图时,表仍然显示编辑记录之前的数据状态。因此,我必须重新加载表数据以显示更改 在显示表数据之前,似乎不可能重新加载它,因为仅调用会更新显示的记录。在表显示后重新加载它会导致旧数据在用户眼前发生变化,我对此不太满意 在我看来,这在iPhone应用程

我有一个用户界面,其中记录数据的摘要显示在导航控制器内的表格中。当用户单击某行的附件按钮时,导航控制器上会显示一个新视图,用户可以在该视图中编辑相应记录中的数据。完成后,编辑视图将从导航控制器的堆栈中弹出,用户将返回到表视图

我的问题是,当用户返回到表视图时,表仍然显示编辑记录之前的数据状态。因此,我必须重新加载表数据以显示更改

在显示表数据之前,似乎不可能重新加载它,因为仅调用会更新显示的记录。在表显示后重新加载它会导致旧数据在用户眼前发生变化,我对此不太满意

在我看来,这在iPhone应用程序中是一件非常正常的事情

有谁能提出这样做的最佳实践方法吗?我觉得我错过了什么


干杯-史蒂夫。

我将通过以下方式实现这一点:

  • 保存已单击单元格的索引

  • 实现视图控制器的
    -[UIViewController视图将出现:
    方法,其中包含UITableView。如果保存的indexPath不是nil,请使用以下内容重新加载指定的单元格:

    -[UITableView重新加载rowsatindexpaths:withRowAnimation:]


  • 标准方法一开始听起来可能有很多麻烦,但对于很多情况来说是一种有用的模式

    在tableview类中创建如下方法:

    -(void)editDone {
        [self.tableView reloadData];
    }
    
    将属性添加到编辑控制器,如:

    @property (assign) id delegate;
    
    单击附件时设置代理:

    editController.delegate = self;
    
    编辑完成后,按如下方式调用您的方法:

    [delegate performSelector:@selector(editDone) withObject:nil];
    
    您可以创建类似的方法来处理编辑组件的取消,或执行模态编辑控制器的取消等。如果您愿意,将所有这些都放在协议中被认为是更高级的