Как перезагрузить элементы панели вкладок после смены роли пользователем

#ios #swift #uitabbarcontroller #swift3 #user-roles

#iOS #swift #uitabbarcontroller #swift3 #пользователь-роли

Вопрос:

При нажатии кнопки пользователь приложения может переключаться между двумя ролями, пользователем и менеджером.

В моем tabBarViewController viewDidLoad методе,

 if userRole == "manager" {

            let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let managerHomeViewController = (mainStoryboard.instantiateViewController(withIdentifier: "ManagerHome")) as! UINavigationController
            let managerProfileViewController = (mainStoryboard.instantiateViewController(withIdentifier: "ManagerProfile")) as! UINavigationController
            self.viewControllers?.replaceSubrange(0...1, with: [managerHomeViewController,managerProfileViewController])
        }
  

чтобы изменить первые два элемента панели вкладок при загрузке представления.

В anotherViewController где пользователь нажимает кнопку, чтобы изменить роль,

MainTabBarViewController().aboveFunction()

После выполнения этой строки элементы панели вкладок не обновляются. Его можно обновить до новых элементов панели вкладок, принудительно закрыв приложение и перезапустив его. Как перезагрузить элементы панели вкладок сразу после их обновления?

Ответ №1:

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

И при нажатии кнопки для смены ролей

 let homeViewController = (self.storyboard!.instantiateViewController(withIdentifier: "ManagerHomeTabBar")) as UIViewController
self.present(homeViewController, animated: false, completion: nil)
  

чтобы переключиться на правильный вид панели вкладок.