【问题标题】:Reloading data when clicking back bar button of an UINavigationController单击 UINavigationController 的后退栏按钮时重新加载数据
【发布时间】:2015-05-13 16:00:47
【问题描述】:

我有一个 UINavigationController,它有一个 UITableViewController 作为它的根控制器。我在 viewWillAppear 中重新加载表视图的数据。当我在表格视图中选择一个项目时,它将推送一个新的 UIViewController,用户可以使用它来编辑将在表格视图中显示的数据,然后我单击导航的返回,UITableViewController 的 viewWillAppear 只是没有被调用和数据未重新加载。

那么在这种情况下,我可以在哪里重新加载表格视图的数据?

谢谢。

【问题讨论】:

    标签: ios uinavigationcontroller uikit


    【解决方案1】:

    最简单的方法是使用UINavigationControllerDelegate。有两种方法可用:

    func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated animated: Bool)
    func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated animated: Bool)
    

    在您的UITableViewController(root) 中,您应该添加UINavigationControllerDelegate,当您返回时将调用方法navigationControllerWillShowViewController。这是一个例子:

    class RootTableViewController: UITableViewController, UINavigationControllerDelegate {
        ...
        func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated animated: Bool) {
            //Will run  
        }
        ...
    }
    

    【讨论】:

    • 你的答案是正确的传回数据,但在这种情况下,如果他只想重新加载表格,他应该把它放在 viewWillAppear 中。
    • 也谢谢!您的回答在这个问题上对我没有帮助,但它有助于改进我代码中的另一个地方。
    【解决方案2】:

    viewWillAppear 在您点击后退按钮时被调用。如果您不相信我,请在此处登录!很可能该表没有按照您希望的方式重新加载,因为表数据源有问题。

    【讨论】:

    • 谢谢!你说的对我帮助很大。我是 iOS 新手,我不知道 UITableView 接受 reloadData 消息。我刚刚重新加载了缓存在控制器中的数据,却忘记通知表视图从数据源重新加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多