我想在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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)