从LaunchScreen继续到Main.Storyboard中的viewController?

我在我的LaunchScreen中有一些我想要做的逻辑,如果检查没问题,我想继续使用viewController,如果不想继续使用,可以吗?

我在我的LaunchScreen中想要做一些逻辑

现在我明白了这个问题,我可以回答:不。 稍后再做一些耗时的逻辑。 你的工作是快速启动。 你需要离开applicationDidFinishLaunchingWithOptions ,离开viewDidLoad ,然后启动

你在这一点上展示的是你自己。 如果你有耗费时间的东西(在你的情况下,这听起来像你联网或做一些其他事情需要时间,而你加载一个表的数据源),你想显示一个特殊的视图控制器,覆盖时间有一个纺纱活动的观点什么的,没问题。 但是在实际发射的时候并不是时候这样做。

您的应用程序正在加载时显示LaunchScreen。 去你的AppDelgate

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { window.rootViewController = //your root view controller that you have figured out with logic return true } 

不,你不能代码launchScreen.Storyboard ,原因: – 当你的launchScreen.storyboard显示应用程序仍在加载。

简而言之: 在显示launchScreen.storyboard时,您无法访问您的应用程序,您只需创build一个UI / UX即可,而不需要执行任何代码。

另一种方法: – 做一个viewController ,作为第一个viewController检查你的逻辑,并从那里做相应的事情!

参考: – https://stackoverflow.com/a/27642160/6297658

didFinishLaunchingWithOptions()运行检查并使用它直接跳转到特定的vc。 这里有一个使用userDefaults的例子,但是当然你可以用你正在运行的任何检查来代替它。

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Do some logic let storyboard = UIStoryboard(name: "Main", bundle: nil) let welcomeVC = storyboard.instantiateViewControllerWithIdentifier("WelcomeNavController") self.window = UIWindow(frame: UIScreen.mainScreen().bounds) self.window?.rootViewController = welcomeVC self.window?.makeKeyAndVisible() } } 

将这个函数添加到AppDelegate

 func initialVC(storyboardID: String) { let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let initialViewController : UIViewController = mainStoryboard.instantiateViewControllerWithIdentifier("\(storyboardID)") as UIViewController self.window?.makeKeyAndVisible() if storyboardID == "tabBarVC" { self.window = UIWindow(frame: UIScreen.mainScreen().bounds) self.window?.rootViewController = initialViewController } else { let navController = UINavigationController(rootViewController: initialViewController) self.window = UIWindow(frame: UIScreen.mainScreen().bounds) self.window?.rootViewController = navController } } 

didFinishLaunchingWithOptions内部的didFinishLaunchingWithOptions方法中,可以添加以下内容:

 if currentUser != nil { initialVC("tabBarVC") } else { initialVC("loginVC") } 

你可以在我的例子中看到,我要么加载主要的应用程序VC或loginVC取决于用户是否login。在你的情况下,你可以使用if – else语句,并执行initialVC函数内的逻辑。

注意:当我要求加载loginVC ,我必须加载navigationController因为loginVCembedded在navigationController中。 对于tabBarVC ,我不embeddednavController因为它不是必需的。