iOS: 在 UITabbarController 中显示登录 viewcontroller 或 "another" viewcontroller?
iOS: Show login viewcontroller or "another" viewcontroller inside of UITabbarController?
我有一个包含 5 个标签的标签栏。
其中 3 个选项卡需要通过帐户进行身份验证。
我知道一种解决方案是在按下其中一个选项卡时显示模态 viewcontroller。
我希望在选项卡内显示登录 viewcontroller 而不是模态显示。如何做到这一点以及如何在用户登录后 "reload" 标签栏与其他 viewcontroller 一起?
我会通过创建一个 UINavigationController 的子类来做到这一点,它接收一个 UIViewController 来显示用户是否登录,并在其他情况下显示登录页面。
class CustomNavController:UINavigationViewController {
let loggedInViewController:UIViewController
init(loggedInVC:UIViewController) {
loggedInViewController = loggedInVC
if (userLoggedIn) {
onLogin()
} else {
onLogout()
}
//setup listeners for authentication
super.init()
}
onLogout () {
self.viewControllers = [AuthenticationVC()]
}
onLogin () {
self.viewControllers = [loggedInViewController]
}
}
//code for setting up your UITabBarViewController
class MyTabbar:UITabBarViewController {
init() {
viewControllers = [
FirstVC(),
SecondVC(),
CustomNavController(ThirdVC()),
CustomNavController(ForthVC()),
CustomNavController(FifthVC())
]
}
}
我有一个包含 5 个标签的标签栏。
其中 3 个选项卡需要通过帐户进行身份验证。
我知道一种解决方案是在按下其中一个选项卡时显示模态 viewcontroller。
我希望在选项卡内显示登录 viewcontroller 而不是模态显示。如何做到这一点以及如何在用户登录后 "reload" 标签栏与其他 viewcontroller 一起?
我会通过创建一个 UINavigationController 的子类来做到这一点,它接收一个 UIViewController 来显示用户是否登录,并在其他情况下显示登录页面。
class CustomNavController:UINavigationViewController {
let loggedInViewController:UIViewController
init(loggedInVC:UIViewController) {
loggedInViewController = loggedInVC
if (userLoggedIn) {
onLogin()
} else {
onLogout()
}
//setup listeners for authentication
super.init()
}
onLogout () {
self.viewControllers = [AuthenticationVC()]
}
onLogin () {
self.viewControllers = [loggedInViewController]
}
}
//code for setting up your UITabBarViewController
class MyTabbar:UITabBarViewController {
init() {
viewControllers = [
FirstVC(),
SecondVC(),
CustomNavController(ThirdVC()),
CustomNavController(ForthVC()),
CustomNavController(FifthVC())
]
}
}