首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何通过更改选项卡栏索引来仅当屏幕可见时执行代码,但现在当另一个显示的模式屏幕在屏幕上消失时执行代码?

如何通过更改选项卡栏索引来仅当屏幕可见时执行代码,但现在当另一个显示的模式屏幕在屏幕上消失时执行代码?
EN

Stack Overflow用户
提问于 2018-04-11 20:16:33
回答 1查看 30关注 0票数 0

所以我的应用程序是一个包含3个选项卡的选项卡栏应用程序。我想要实现的是在从选项卡栏中选择第三个选项卡时刷新它的屏幕。为此,我覆盖了viewWillAppear(..),并在其中添加了我的代码。

但是,当关闭已经显示的第三个选项卡屏幕上的模式屏幕时,或者在屏幕显示时选择照片时,也会调用viewWillAppear(..),这是我不想要的。

因为viewDidLoad(..)只被调用一次,所以将我的自定义代码移到viewDidLoad()也不起作用。(正如我所说的,每次选中选项卡时,我都要刷新它。

我尝试将代码移动到一个名为initialise()的自定义方法中,并让此方法执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
            ((self.viewControllers![2] as! UINavigationController).viewControllers[0] as! MyCustomViewController).initialise()

}

但它失败了,因为当我调用initialise()时,UI元素还没有加载,它崩溃了。

你知道如何实现这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2018-04-11 20:21:48

给标签栏控制器一个委托并实现这个方法:tabBarController(_:shouldSelect:)

https://developer.apple.com/documentation/uikit/uitabbarcontrollerdelegate/1621166-tabbarcontroller

仅当选项卡通过从选项卡栏进行选择而更改时,才会调用它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49774895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档