首页 > 解决方案 > UINavigationController 必须在使用新 ViewController 更新视图时调用方法

问题描述

我有一个 UINavigationControllerSubclass。当视图控制器弹出到某个新的视图控制器时(通过navigationController.popViewControllernavigationController.popToRootViewController甚至通过manually sliding from left to right

我需要在我的导航控制器内部调用:

viewController.newTopViewController.updateBackButtonTitle()

实现这一目标的最佳方法是什么?

标签: iosswiftuiviewcontrolleruinavigationcontroller

解决方案


一种方法如下:

class CustomNavigationController: UINavigationController {

    override func popToRootViewController(animated: Bool) -> [UIViewController]? {
        shouldUpdateBackButtonTitle()
        return super.popToRootViewController(animated: animated)
    }

    override func popViewController(animated: Bool) -> UIViewController? {
        shouldUpdateBackButtonTitle()
        return super.popViewController(animated: animated)
    }

    private func shouldUpdateBackButtonTitle() {
        viewController.newTopViewController.updateBackButtonTitle()
    }
}

推荐阅读