Возврат к начальному ViewController в иерархии представлений при открытии вкладки - PullRequest
0 голосов
/ 18 января 2019

У меня сейчас проблема с UITabBarController s и UINavigationControllers.

Скажи, что у меня 2 ViewControllers в моем UITabBar:

  • MenuOne

  • MenuTwo

Вкл. MenuOne У меня есть кнопка, которая ведет к новому ViewController; PageOne.

Если я перейду к первой вкладке (MenuOne) и затем нажму кнопку с переходом к PageOne, панель вкладок останется. Если я коснусь второй вкладки (MenuTwo) и вернусь к MenuOne, я вернусь к PageOne, где я остановился в этой иерархии представлений.

Насколько я понимаю, это намерение Apple, и именно так UITabBarControllers работает с UINavigationControllers, но когда я несколько ViewController глубоко в MenuOne, я не хочу, чтобы мои пользователи перемещались по вкладки и не перенаправляются на начальные ViewController.

Для пояснения, вот как выглядит процесс сейчас:

MenuOne> * кнопка крана *> PageOne> * вкладка крана *> * MenuTwo> * вкладка крана *> PageOne

И вот как я хочу, чтобы это работало:

MenuOne> * кнопка крана *> PageOne> * вкладка крана *> MenuTwo> * вкладка крана *> MenuOne

Кто-нибудь знает, как я могу это решить?

1 Ответ

0 голосов
/ 18 января 2019

Вы можете создать пользовательский UITabBarController следующим образом:

class MyTabBarController: UITabBarController, UITabBarControllerDelegate {
    override func viewDidLoad() {
        self.delegate = self
    }

    // when a controller is selected...
    func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
        if let vc = viewController as? UINavigationController {
            // pop the navigation controller to root VC
            vc.popToRootViewController(animated: false)
        }
    }
}

В раскадровке установите класс UITabBarController на MyTabBarController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...