Ios 视图将显示在选项卡栏项目视图控制器中未调用
我有以下结构: *-TabBarViewController(根目录) *--导航视图控制器 *----聊天视图控制器 *--导航视图控制器 *----菜单控件 当我切换选项卡栏项目时,视图将显示在(聊天室,菜单)中,只调用一次,但在导航VC中,每次切换都会调用 切换项目时,是否可以在聊天室和菜单ViewController中自动调用viewWillAppeare super.viewwillbeen位于方法内部 我的代码如下所示:Ios 视图将显示在选项卡栏项目视图控制器中未调用,ios,swift,uinavigationcontroller,uitabbarcontroller,uitabbar,Ios,Swift,Uinavigationcontroller,Uitabbarcontroller,Uitabbar,我有以下结构: *-TabBarViewController(根目录) *--导航视图控制器 *----聊天视图控制器 *--导航视图控制器 *----菜单控件 当我切换选项卡栏项目时,视图将显示在(聊天室,菜单)中,只调用一次,但在导航VC中,每次切换都会调用 切换项目时,是否可以在聊天室和菜单ViewController中自动调用viewWillAppeare super.viewwillbeen位于方法内部 我的代码如下所示: class TabBarController: UITabBa
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let v1 = storyboard!.instantiateViewController(withIdentifier: "ChatViewController")
let v2 = storyboard!.instantiateViewController(withIdentifier: "MenuViewController")
viewControllers = [v1,v2]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
class ChatViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print(self,#function)
}
}
class MenuViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print(self,#function)
}
}
它适用于清晰的新项目,但适用于旧项目(在我工作的地方,我有很多功能,不起作用)
故事板ID链接到
故事板中的NavigationViewController
关于将viewcontroller添加到tabbarcontroller和navigation controller,您的问题不清楚。我在故事板中创造了一切。视图将出现在视图控制器中,包括:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("Menu View will appear")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("Chat View will appear")
}
当我切换时,我能够获得以下输出:
Menu View will appear
Chat View will appear
Menu View will appear
Chat View will appear
我发现了一个问题:
在扩展UINavigationController
中,我有一个方法
open override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if !UserDefaults.standard.isUserPresented {
navigationBar.barTintColor = .rgbColor(red: 43, green: 43, blue: 43, alpha: 1)
} else {
navigationBar.barTintColor = .rgbColor(red: 100, green: 100, blue: 100, alpha: 1)
}
}
此块视图将显示在导航栏的子视图控制器中是的,它可能会显示与tabbarController相关的代码