gpt4 book ai didi

ios - 在 UITabBarController 之前呈现登录 View Controller

转载 作者:行者123 更新时间:2023-11-30 11:43:23 25 4
gpt4 key购买 nike

我想提供一个登录 View Controller ,以便我的用户可以在显示选项卡栏 Controller 之前进行身份验证。在下面显示的代码中,我收到错误“无法将‘LogInViewController’类型的值转换为‘UITabBarController’。列出了 Apple 文档:

When deploying a tab bar interface, you must install this view as the root of your window. Unlike other view controllers, a tab bar interface should never be installed as a child of another view controller.

当我在作为选项卡栏 Controller 一部分的 5 个 View Controller (例如,controller1.coreDataStack = coreDataStack,声明为 AppDelegate 类中的属性)之间传播核心数据时,我感到很困惑,而且我的实现很复杂。我可以获得一些有关如何将用户从登录屏幕转换到选项卡式 View Controller 之一的帮助吗?任何意见将不胜感激。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

// Login View Controller
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let loginVC = storyboard.instantiateViewController(withIdentifier: "loginVC") as! LogInViewController
self.window?.rootViewController = loginVC

// TabBar Controller
let tabController = window!.rootViewController as! UITabBarController
if let tabViewControllers = tabController.viewControllers {
// First tab (only one so far...)
let navController = tabViewControllers[0] as! UINavigationController
let controller1 = navController.viewControllers.first as! FirstViewController
controller1.coreDataStack = coreDataStack
}
}

最佳答案

由于尝试强制将 LogInViewController 解包到 UITabBarController,因此出现错误。

对于您的设计流程,在数据库中存储用户的登录状态,在设置window.rootViewController之前对此进行检查,如果用户已登录,则显示 tabController,否则显示LogInViewController

        let userLogined = GET LOGIN STATUS FROM DATABSE
if userLogined{
// Initiate Tabbar Controller object
let tabController = INITIATE_TABBAR_CONTROLLER
let tabViewControllers = tabController.viewControllers
// First tab (only one so far...)
let navController = tabViewControllers[0] as! UINavigationController
let controller1 = navController.viewControllers.first as! FirstViewController
controller1.coreDataStack = coreDataStack
self.window?.rootViewController = tabController

}else{
// Login View Controller
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let loginVC = storyboard.instantiateViewController(withIdentifier: "loginVC") as! LogInViewController
self.window?.rootViewController = loginVC
}

关于ios - 在 UITabBarController 之前呈现登录 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49091385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com