Как изменить индекс UITabViewController после перехода к корневому контроллеру представления в iOS Swift 5

У меня есть UITabbarController в качестве контроллера корневого представления. Мне нужно перейти к корневому контроллеру представления и изменить выбранный индекс панели вкладок.

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

   self.navigationController?.popToRootViewController(animated: true)

    if let tab = self.tabBarController {
           tab.selectedIndex = 0      
    }

Я использовал это как альтернативу, но все еще не добился успеха

    self.navigationController?.tabBarController?.selectedIndex = 0

person ios    schedule 22.04.2020    source источник


Ответы (2)


Контроллер представления не может изменить индекс после извлечения в корневой контроллер, потому что в данный момент контроллер не существует.

Вы можете изменить индекс, а затем появиться на корневом контроллере.

person Ziad Kamel    schedule 09.10.2020

Это можно сделать, просто используя приведенный ниже код:

  guard let vc = self.navigationController?.viewControllers else {return }
            for controller in vc {
                if controller.isKind(of: CustomTabBarViewController.self) {
                    let tabVC = controller as! CustomTabBarViewController
                    tabVC.selectedIndex = 0
                    self.navigationController?.popToViewController(tabVC, animated: true)
}
person ios    schedule 23.04.2020