2016-12-28 70 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{} 
相關問題