2016-12-28 74 views
1

现在我有一个MainViewController,它嵌入在UINavigationController中,因此导航控制器被设置为初始视图控制器。如何表示故事板中的启动屏幕

我想要的是第一次应用程序启动,然后才显示StartupViewController。但我不确定如何在故事板中表现这一点。

应如果应用程序启动第一次,如果没有导航控制器应设置此被设置为初始视图控制器。

我试过的是StartupViewControllerMainViewController::viewDidLoad(),但它不能工作,我也想要。

任何人都知道什么是正确的方法来做到这一点?

+0

你为什么不使用LaunchScreen.Storyboard的启动画面 –

+0

你可以从你的appDelegate张贴一些代码?还有一件事要问,根据你的问题,你想要一个自定义加载屏幕对你..? – Tuhin

+0

是的,我想要一个屏幕显示您是否想要从iCloud加载数据,或者只需启动Fresh。而当u开始首次 – Kobe

回答

1

你好这个代码可能对您有帮助:

// MARK: - Application Supporting Funcations - 
func loadFirstViewController(viewController: String) 
{ 
    // for loading first view Controller 
    let storyBoard = appDelegate.AppStoryBoard() 
    /////////////////////////Add Navigation Controller and set Root View Controller/////////////////////////////////////// 
    let object = storyBoard.instantiateViewControllerWithIdentifier(viewController) // for prelogin navigation 
    self.navigationController = UINavigationController(rootViewController: object) 
    self.navigationController?.navigationBar.hidden = true 
    self.loadNavigationControllerToWindow() 
} 

func loadNavigationControllerToWindow() 
{ 
    if self.window == nil 
    { 
     self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 
    } 
    // for loading root view 
    self.window!.rootViewController = self.navigationController! 
    self.window!.makeKeyAndVisible() 
} 

中调用此函数didFinishLaunchingWithOptions

if((NSUserDefaults.standardUserDefaults().valueForKey("isFirstTime") != nil)) 
     { 
      self.loadFirstViewController("LoginVC") // for loading first view controller 
     } 
     else 
     { 
      self.loadFirstViewController("WelcomeVC") // for loading first view controller 
     } 

把这个你在第二CONTROLER viewDidLoad中去后

if((NSUserDefaults.standardUserDefaults().valueForKey("isFirstTime") == nil)) 
    { 
     NSUserDefaults.standardUserDefaults().setValue("1", forKey: "isFirstTime") 
    } 
0

请不要忘了给标识符到您的视图控制器StartupViewController

- >用户交互启用StartupViewController

if (UserDefaults.standard.string(forKey: "keepUsername") != nil) { 


     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let vc = storyboard.instantiateViewController(withIdentifier: "Revealview") 
     self.present(vc, animated: false, completion: nil) 
    } 
    else 
    { 
     let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 

     let nextViewController = storyBoard.instantiateViewController(withIdentifier: "loginview") as! loginview 
     self.present(nextViewController, animated:true, completion:nil) 
    } 
+0

我知道如何创建它,我不知道如何仅在第一次启动应用程序时才代表VC。 – Kobe

+0

是否意味着你想只说第一次StartupViewController显示? – seggy

+0

更新的答案请检查.. – seggy

1

这是我在我的应用程序是如何来达到的。 将此添加到appdelegate applicationdidfinishlaunching中。

NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults]; 
if (![defaults boolForKey:@"FirstTime"]) 
{ 
    //NSLog(@"Enter First Time "); 
    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; 
    StartupViewController * firstViewController = [storyBoard instantiateViewControllerWithIdentifier:@"StartupViewController"];//AskAndAnswerViewId RegisterViewId TagViewId HelpViewId 
    self.navigationController=[[UINavigationController alloc]initWithRootViewController:firstViewController]; 
    self.window.rootViewController = self.navigationController; 
    [self.navigationController setNavigationBarHidden:YES]; 
} 
else  
{ 
    //NSLog(@"not First Time"); 
    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; 
    HelpViewController *mainviewcontroller = [storyBoard instantiateViewControllerWithIdentifier:@"AskAndAnswerViewId"]; 
    self.navigationController=[[UINavigationController alloc]initWithRootViewController:mainviewcontroller]; 
    self.window.rootViewController = self.navigationController; 
    [self.navigationController setNavigationBarHidden:YES]; 
} 

一旦你Mainviewcontroller达到改变userdefault值FirstTime为 “NO”。

1

我明白你的问题,

AppDelegate尝试设置RootViewController的,

我在NSUserDefault存储数据,如果用户来首次
并尝试设置RootViewController的一次,他参观的第一次。

在例下面我有导航用户登录界面/主屏幕

let str = userDefaults.objectForKey("firstTime") 
{}else{} 
相关问题