所以我的应用程序是一个由 3 个选项卡组成的选项卡栏应用程序。我想要实现的是在从选项卡栏中选择第三个选项卡时刷新它的屏幕。为此,我覆盖了 viewWillAppear(..)
并在那里添加了我的代码。
但是 viewWillAppear(..)
在已经显示的第 3 个选项卡屏幕上关闭模态屏幕时,或者在显示屏幕时选择照片时也会被调用,我不想那个。
将我的自定义代码移动到 viewDidLoad()
也不起作用,因为 viewDidLoad(..)
只被调用一次。 (正如我所说,每次选择时我都想刷新选项卡。
我已经尝试将我的代码移动到名为 initialise()
的自定义方法中,并让该方法执行以下操作:
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
((self.viewControllers![2] as! UINavigationController).viewControllers[0] as! MyCustomViewController).initialise()
}
但它失败了,因为在我调用 initialise()
时 UI 元素尚未加载,它崩溃了。
知道如何实现吗?
最佳答案
给标签栏 Controller 一个委托(delegate)并实现这个方法:tabBarController(_:shouldSelect:)
https://developer.apple.com/documentation/uikit/uitabbarcontrollerdelegate/1621166-tabbarcontroller
它仅在通过从选项卡栏中进行选择而更改选项卡时准确调用。
关于ios - 如何仅在通过更改标签栏索引使屏幕可见时执行代码,但现在当另一个显示的模态屏幕在其上消失时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49774895/