#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)
чтобы переключиться на правильный вид панели вкладок.