如何在UINavigationController层次结构中刷新UITableView的最佳方法?

4
我对iPhone开发还很陌生,一直在寻找解决这个问题的简洁方法。
我的用户界面中有一个表格,其中显示了导航控制器内记录数据的摘要。当用户单击行的附属按钮时,会将新视图推入导航控制器,显示用户可以编辑相应记录中的数据的视图。完成后,编辑视图从导航控制器的堆栈中弹出,并返回到表格视图。
我的问题是,当用户返回到表格视图时,表格仍显示记录被编辑之前的状态。因此,我必须重新加载表格数据以显示更改。
似乎不可能在显示表格数据之前重新加载它,因为该调用只更新已显示的记录。在表格显示后重新加载它会导致旧数据在用户眼前改变,这让我感到不太满意。
在iPhone应用程序中,这似乎是一个很正常的需求。
请问有谁能建议最佳实践方法来解决这个问题吗?我感觉自己漏了什么。
谢谢 - Steve.
2个回答

16

一开始标准方法可能听起来很麻烦,但它是许多情况下有用的模式。

在你的表格视图类中创建一个像这样的方法:

-(void)editDone {
    [self.tableView reloadData];
}

像这样向您的编辑控制器添加一个属性:

@property (assign) id delegate;

当点击您的配件时,请设置代理:

editController.delegate = self;

当编辑完成后,像这样调用您的方法:

[delegate performSelector:@selector(editDone) withObject:nil];

您可以创建类似的方法来处理编辑组件的取消,或执行模态编辑控制器的解除等操作。如果您喜欢,将所有这些放在协议中被认为更加优雅。


13
我会这样实现:
  1. 保存点击的单元格的 indexPath。

  2. 实现包含 UITableView 的视图控制器的 -[UIViewController viewWillAppear:] 方法。如果保存的 indexPath 不为 nil,则使用以下代码重新加载指定的单元格:

    -[UITableView reloadRowsAtIndexPaths:withRowAnimation:]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接