ViewWillAppear Не вызывается в панели вкладок элементов представления контроллера - PullRequest
0 голосов
/ 04 июня 2018

У меня есть структура:

* - TabBarViewController (Root)

* - NavigationViewController

* ---- ChatViewController

* -NavigationViewController

* ---- MenuViewController

и пока я переключаю элементы панели вкладок, viewWillAppear в (Чат, Меню) вызывается только один раз, но в NavigationVC вызывается каждый раз, когда я переключаюсь.

Можно ли автоматически вызывать viewWillAppeare в Chat и Menu ViewControllers при переключении элементов?

super.viewWillAppear находится внутри метода.

мой код выглядит следующим образом:

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)
    }
}

Он работает над новым проектом, но на старом (где я работаю, и у меня много функциональности, не работает)

StoryboardId связан с NavigationViewController в Storyboard

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Я обнаружил проблему: в extension 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)
        }
    }

и этот блок viewWillAppear в контроллерах дочерних представлений в NavigationBar

0 голосов
/ 04 июня 2018

Ваш вопрос не ясен по поводу добавления viewcontroller к tabbarcontroller и контроллеру навигации.Я создал все в раскадровке.Вид будет отображаться в контроллере вида:

 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
...