Ios 视图将显示在选项卡栏项目视图控制器中未调用

Ios 视图将显示在选项卡栏项目视图控制器中未调用,ios,swift,uinavigationcontroller,uitabbarcontroller,uitabbar,Ios,Swift,Uinavigationcontroller,Uitabbarcontroller,Uitabbar,我有以下结构: *-TabBarViewController(根目录) *--导航视图控制器 *----聊天视图控制器 *--导航视图控制器 *----菜单控件 当我切换选项卡栏项目时,视图将显示在(聊天室,菜单)中,只调用一次,但在导航VC中,每次切换都会调用 切换项目时,是否可以在聊天室和菜单ViewController中自动调用viewWillAppeare super.viewwillbeen位于方法内部 我的代码如下所示: class TabBarController: UITabBa

我有以下结构:

*-TabBarViewController(根目录)

*--导航视图控制器

*----聊天视图控制器

*--导航视图控制器

*----菜单控件

当我切换选项卡栏项目时,视图将显示在(聊天室,菜单)中,只调用一次,但在导航VC中,每次切换都会调用

切换项目时,是否可以在聊天室和菜单ViewController中自动调用viewWillAppeare

super.viewwillbeen位于方法内部

我的代码如下所示:

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相关的代码