ios – 从Popped UINavigationController或UITabBarController确定viewWillAppear

ios – 从Popped UINavigationController或UITabBarController确定viewWillAppear,第1张

概述我无法找到区分从Nav控制器堆栈d出和从UITabBarController进入视图控制器的方法. 我想在ViewWillAppear中调用一个方法,只有当视图从TabBar中显示时,而不是当有人按下导航控制器时. 如果我没有使用TabBarController,我可以使用viewDidLoad轻松实现这一功能. 我试过了, override func viewWillAppear(animate 我无法找到区分从Nav控制器堆栈d出和从UITabbarController进入视图控制器的方法.

我想在VIEwWillAppear中调用一个方法,只有当视图从Tabbar中显示时,而不是当有人按下导航控制器时.

如果我没有使用TabbarController,我可以使用vIEwDIDLoad轻松实现这一功能.

我试过了,

overrIDe func vIEwWillAppear(animated: Bool) {    super.vIEwWillAppear(animated)    println("VIEw Will Appear")    if isBeingPresented() {        println("BP")    }    if isMovingFromParentVIEwController() {        println("from")    }    if isMovingtoparentVIEwController() {        println("to")    }}

但是当我按Tab键按钮或按下后退按钮时,没有任何区别.

只有“VIEw Will Appear”才会被调用.

使用iOS 8.4 / Swift

解决方法 听起来很好用 UITabBarControllerDelegate.

首先,在VIEwController comeFromTab上添加一个Bool属性:

class MyVIEwController: UIVIEwController {    var comingFromTab = false    // ...}

将UITabbarControllerDelegate设置为您想要的任何类,并实现方法shouldSelectVIEwController.您可能还想要将UITabbarController子类化并将它们放在那里.

func tabbarController(tabbarController: UITabbarController,shouldSelectVIEwController vIEwController: UIVIEwController) -> Bool {    if let myVIEwController = vIEwController as? MyVIEwController {        myVIEwController.comingFromTab = true}

如果选项卡的初始视图控制器是UINavigationController,则必须打开它并访问它的第一个视图控制器:

if let navController = vIEwController as? UINavigationController {    if let myVIEwController = navController.vIEwControllers[0] as? MyVIEwController {        // do stuff    }}

最后,在视图控制器的vIEwWillAppear中添加所需的任何功能:

overrIDe func vIEwDIDAppear(animated: Bool) {    super.vIEwWillAppear(animated)    // ...    if comingFromTab {        // Do whatever you need to do here if coming from the tab selection        comingFromTab = false    }}
总结

以上是内存溢出为你收集整理的ios – 从Popped UINavigationController或UITabBarController确定viewWillAppear全部内容,希望文章能够帮你解决ios – 从Popped UINavigationController或UITabBarController确定viewWillAppear所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1058622.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存