用户更改角色后如何重新加载标签栏项目
How to reload tab bar items after user changes role
当点击一个按钮时,应用程序用户可以在用户和管理员两种角色之间切换。
在我的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()
在 运行 这行之后,标签栏项目没有更新。它 只能通过强制关闭应用程序并重新启动它来更新为新的标签栏项目 。如何在更新后立即重新加载标签栏项目?
我没有找到重新加载的解决方案,但我最终在情节提要中使用两个标签栏控制器来为用户和管理员呈现两个视图。
以及点击按钮更改角色时
let homeViewController = (self.storyboard!.instantiateViewController(withIdentifier: "ManagerHomeTabBar")) as UIViewController
self.present(homeViewController, animated: false, completion: nil)
切换到正确的标签栏视图。
当点击一个按钮时,应用程序用户可以在用户和管理员两种角色之间切换。
在我的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()
在 运行 这行之后,标签栏项目没有更新。它 只能通过强制关闭应用程序并重新启动它来更新为新的标签栏项目 。如何在更新后立即重新加载标签栏项目?
我没有找到重新加载的解决方案,但我最终在情节提要中使用两个标签栏控制器来为用户和管理员呈现两个视图。
以及点击按钮更改角色时
let homeViewController = (self.storyboard!.instantiateViewController(withIdentifier: "ManagerHomeTabBar")) as UIViewController
self.present(homeViewController, animated: false, completion: nil)
切换到正确的标签栏视图。