self.tabBarController? .selectedIndex и выполнять функцию в другом контроллере представления - PullRequest
1 голос
/ 01 июня 2019

У меня 4 контроллера представления в контроллере панели вкладок и каждый со встроенным контроллером навигации. Проблема в том, что я исследовал и нашел лучший способ перейти от Viewcontroller0 к Viewcontroller 1 на вкладке Bar - это использовать self.tabBarController?.selectedIndex = 1, и он работает правильно. Тем не менее, я хочу сделать функцию сразу после навигации. Следующее - моя попытка, но она не сработала. У кого-нибудь есть идея? Большое спасибо.

  @IBAction func GOGOBut(_ sender: Any) {

    self.tabBarController?.selectedIndex = 1

    if let VC = presentingViewController as? TutorViewController {
        VC.observeBBCases()
    }
    //NotificationCenter.default.post(name:  NSNotification.Name(rawValue: "loadBAFS"), object: nil)

}

наблюдайBBCases () - это функция в TutorViewController И self.tabBarController? .SelectedIndex = 1 должен идти TutorViewController

1 Ответ

1 голос
/ 01 июня 2019

Сначала получите UINavigationController, который содержит TutorViewController, используя индекс 1.И получите корневой контроллер вида TutorViewController контроллера навигации.Тогда вы можете вызвать метод observeBBCases

@IBAction func GOGOBut(_ sender: Any) {
    if let navigationController = self.tabBarController?.viewControllers?[1] as? UINavigationController,
        let vc = navigationController.viewControllers.first as? TutorViewController {
            vc.observeBBCases()
            self.tabBarController?.selectedIndex = 1
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...