Ios 启动应用程序时更改tabbarindex或setviewcontroller
如果用户!=零 我有两个可以更改的ViewController: 1) ProfileVC 2) SIGNNVC 但当我的应用程序启动时,用户会看到不同的viewController,他是NewsVC Me需要在运行应用程序之前进行检查,并在tabbar中替换viewController 在AppDelegate.swift中大致如此:Ios 启动应用程序时更改tabbarindex或setviewcontroller,ios,swift,uiviewcontroller,uitabbarcontroller,Ios,Swift,Uiviewcontroller,Uitabbarcontroller,如果用户!=零 我有两个可以更改的ViewController: 1) ProfileVC 2) SIGNNVC 但当我的应用程序启动时,用户会看到不同的viewController,他是NewsVC Me需要在运行应用程序之前进行检查,并在tabbar中替换viewController 在AppDelegate.swift中大致如此: let storyboard = UIStoryboard(name: "Main", bundle: nil) if Auth.auth().cur
let storyboard = UIStoryboard(name: "Main", bundle: nil)
if Auth.auth().currentUser != nil {
let profileVC = storyboard.instantiateViewController(withIdentifier: "ProfileVC")
window?.rootViewController = profileVC
} else {
let loginVC = storyboard.instantiateViewController(withIdentifier: "SignInVC")
window?.rootViewController = loginVC
}
}
但这不是正确的方法。如何更改索引或viewController?您需要对
UITabBarController
进行子类化,并管理其viewController
数组
class MainTabBarController: UITabBarController {
override func awakeFromNib() {
super.awakeFromNib()
// if you will say force - unwrapped it's the developer job to keep track here
let signUp = self.viewControllers![0]
let profile = self.viewControllers![1]
let newsFeeds = self.viewControllers![2]
if user == nil {
self.viewControllers = [signUp] // leave signup only
}
}
}
将
MainTabBarController
分配到IB中的选项卡您需要为viewcontroller设置索引
这是您如何通过编程实现的:
self.window = UIWindow(frame: UIScreen.main.bounds)
let nav1 = UINavigationController()
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let profileVC = mainStoryboard.instantiateViewController(withIdentifier: "ProfileVC") as! //your VC
nav1.viewControllers = [profileVC]
let nav2 = UINavigationController()
let loginVC = mainStoryboard.instantiateViewController(withIdentifier: "SignInVC") as! //Your VC
nav2.viewControllers = [loginVC]
let tabController = UITabBarController()
tabController.viewControllers = [profileVC, loginVC]
tabController.selectedIndex = 0 //This line will solve your question & take you to the profileVC
self.window!.rootViewController = tabController
self.window?.makeKeyAndVisible()
我有点明白,但这是怎么回事?