如何在首次启动应用程序时设置其他入口点?

Rob*_*Rob 2 storyboard ios

我有一个Main.storyboard包含我的应用程序的根视图控制器。但是,我想在首次启动应用程序时显示一个加载视图(没有导航控制器),以便用户填充仅需要一次的某些数据。因此,我正在考虑创建一个Onboarding.storyboard,但我不知道如何选择要设置的情节提要,在哪里进行设置(AppDelegate?),以及何时填充数据以及如何更改当前的情节提要。

谢谢你的帮助。

Ima*_*Ali 5

对于Swift 3.x,请尝试此操作,确保在两个故事板上都设置了Initial View Controller。在您的AppDelegate.swift文件中,application:didFinishLaunchingWithOptions

var storyboardName:String?
if someCondition {
    storyboardName = "Onboarding"
}else{
    storyboardName = "Main"
}

let storyboard = UIStoryboard(name: storyboardName, bundle: nil)

let intialVC = storyboard.instantiateInitialViewController()

self.window?.rootViewController = intialVC
Run Code Online (Sandbox Code Playgroud)


elk*_*ner 1

您需要在 AppDelegate 的 didFinishLaunchingWithOptions 方法中更改此设置。每次应用程序启动期间都会调用此方法。

如何:

考虑这个例子。存储值NSUserdefaults并在应用程序启动期间检索它。

例子

目标C:

BOOL isCompletedSetupWizard =[[NSUserDefaults standardUserDefaults] boolForKey:@"isCompletedSetupWizard"];

if (isCompletedSetupWizard) 
{ 
   //Your code goes here
   //....
   //....
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    viewController = [storyboard instantiateViewControllerWithIdentifier:@"yourFirstView"];
    self.window.rootViewController = viewController;
}
else  
{
  //Your code goes here for another view controller.
  //....
  //....
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"onBoarding" bundle:nil];
    viewController = [storyboard instantiateViewControllerWithIdentifier:@"yourSecondView"];
    self.window.rootViewController = viewController;
}
Run Code Online (Sandbox Code Playgroud)