在后退导航上更新 UITableViewController

Posted

技术标签:

【中文标题】在后退导航上更新 UITableViewController【英文标题】:Updating UITableViewController on back navigation 【发布时间】:2017-09-25 12:23:39 【问题描述】:

我有一个UITableViewController 列出了 api 获取的项目列表。还有另一个处理新项目创建的 ViewController。项目保存成功后。当我按下导航栏上的默认后退按钮以获取项目列表时。该列表未更新(需要重新启动应用才能显示最新结果

viewDidLoad 方法当前处理获取项目的 api 调用。

【问题讨论】:

在 viewWillAppear 中移动 API 工作。 发生这种情况是因为 viewDidLoad 在视图控制器第一次初始化时只被调用一次。在 viewWillAppear 中调用 API 而不是 viewDidLoad,然后重新加载表格视图。 @PallaviSrikhakollu : 如果在 viewWillAppear 中调用 api,则无需在 viewDidload 中调用。 @Lion 你是对的,这就是为什么我说在 viewWillAppear 而不是 viewDidLoad 中调用 API。我刚刚提到了 viewDidLoad 功能以便更好地理解。 @PallaviSrikhakollu:您编辑的评论没问题!旧的错了! 【参考方案1】:

您需要做的就是这个(在您的具有 UITableView 的 UIViewController 中)。此时您不必担心单元级别会发生什么。

- (void)viewWillAppear:(BOOL)animated 
    [super viewWillAppear:animated];
    [self.tableView reloadData]; // to reload selected cell

只需将上面的代码添加到您的控制器,当您从第二个视图返回时,您就会发现正确的事情发生了。对 reloadData 的调用告诉 table view 它需要从你的模型中刷新它的单元格,其他一切都很好。

【讨论】:

以上是关于在后退导航上更新 UITableViewController的主要内容,如果未能解决你的问题,请参考以下文章

按下导航栏中的后退按钮并弹出视图B后更新视图B后面的视图A.

更新整个项目的导航栏后退按钮图像

如何在后退按钮上重新加载上一个视图控制器?

在导航控制器中单击后退按钮时调用哪个方法?

导航栏上没有后退按钮

为啥 Angular 组件未在浏览器后退/前进导航上加载?