как вернуться к контроллеру корневого представления, даже если я нахожусь в другой вкладке в iOS? - PullRequest
0 голосов
/ 10 октября 2019

скажем, у меня есть 3 основные вкладки в нижней части навигации, которые называются

  1. Домой
  2. Поиск
  3. Профиль

, если яна главной вкладке я могу перейти к списку продуктов VC и Product Detail VC следующим образом:

Домой -> Список продуктов -> Product Detail

, скажем, в деталях продукта VC (вГлавная вкладка), пользователь затем выбирает вкладку профиля для выполнения действия выхода из системы

Я хочу, когда пользователь выходит из системы, все вкладки должны быть в корне, я имею в виду в верхней иерархии каждой вкладки, а не внутри, какСведения о продукте

Я знаю, что могу вернуться к корневому виртуальному каналу, используя следующий код, если я нахожусь на той же вкладке:

self.navigationController?.popToRootViewController(animated: true)

, но я хочу, даже если я нахожусь вВкладка профиля, я могу сделать другую вкладку (дома и поиск) обратно в корневой контроллер просмотра.

как это сделать?

Ответы [ 3 ]

0 голосов
/ 10 октября 2019

Вы должны выполнить self.navigationController?.popToRootViewController(animated: true) для всех контроллеров панели вкладок. Следовательно, вы должны сделать это,

    tabBarController.viewControllers?.forEach({ (vc) in
       if let navigationController = vc as? UINavigationController {
            navigationController.popToRootViewController(animated: false)
        }
    })
0 голосов
/ 10 октября 2019

это должно работать для вас -

tabBarController.viewControllers?.forEach({ (vc) in

   if let navigationController = vc as? UINavigationController {

       if let rootVC =  navigationController.viewControllers[0] {

             navigationController.viewControllers = [rootVC]
        }
   }
})

для получения вашего tabBarController в любой точке (я предполагаю, что у вас есть контроллер навигации в корневом каталоге на каждой вкладке) -

 if let tabBarController = self.navigationController?.parent as? UITabBarController {
      //use tab bar controller here
 }
0 голосов
/ 10 октября 2019

Первый: Home, Search, Profile должен быть UINavigationController.
и когда пользователь выходит из системы в профиле viewcontroller, вызовите:

if let navigations = self.tabBarController?.viewControllers {
            for item in navigations {
                if let navigation = item as? UINavigationController {
                    navigation.popToRootViewController(animated: false)
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...