所以我的应用程序是一个包含3个选项卡的选项卡栏应用程序。我想要实现的是在从选项卡栏中选择第三个选项卡时刷新它的屏幕。为此,我覆盖了viewWillAppear(..)
,并在其中添加了我的代码。
但是,当关闭已经显示的第三个选项卡屏幕上的模式屏幕时,或者在屏幕显示时选择照片时,也会调用viewWillAppear(..)
,这是我不想要的。
因为viewDidLoad(..)
只被调用一次,所以将我的自定义代码移到viewDidLoad()
也不起作用。(正如我所说的,每次选中选项卡时,我都要刷新它。
我尝试将代码移动到一个名为initialise()
的自定义方法中,并让此方法执行以下操作:
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
((self.viewControllers![2] as! UINavigationController).viewControllers[0] as! MyCustomViewController).initialise()
}
但它失败了,因为当我调用initialise()
时,UI元素还没有加载,它崩溃了。
你知道如何实现这一点吗?
发布于 2018-04-11 12:21:48
给标签栏控制器一个委托并实现这个方法:tabBarController(_:shouldSelect:)
https://developer.apple.com/documentation/uikit/uitabbarcontrollerdelegate/1621166-tabbarcontroller
仅当选项卡通过从选项卡栏进行选择而更改时,才会调用它。
https://stackoverflow.com/questions/49774895
复制相似问题