2016-07-26 3 views
0

初めてアプリケーションを実行するときにウェルカムページを作成しています。 実際、私はこのApp UIのすべてを既に終えましたが、ストーリーボードに基づいたものはすべてです。 >楽しいアプリケーションへ - 今すぐiOSメインStoryBoardのすぐ前にウェルカムページを作成します。

(「楽しいアプリケーションが」AppDelegate.swiftに空だったので、)、私は

そして、私はAppDelegateで次のコードを追加「)welcomeController(」コードに基づいてウェルカムページを設計しました

window = UIWindow(frame: ScreenBounds) 
    window!.makeKeyAndVisible() 

    let isFristOpen = NSUserDefaults.standardUserDefaults().objectForKey("isFristOpenApp") 

    if isFristOpen == nil { 
     window?.rootViewController = welcomeController() 
     NSUserDefaults.standardUserDefaults().setObject("isFristOpenApp", forKey: "isFristOpenApp") 
    }else { 
     window!.rootViewController = MainTabBarController() 
    } 

をlunchingかどうかを確認するページが正常に動作します歓迎しますが、MainTabBarControllerは、()(ストーリーボードで確認された)だけ空白示します。また、ウェルカムページの最後のページで完了したボタン(「ウィンドウ!.rootViewController = MainTabBarController()」をクリックすると、空白も表示されます(もちろん)。

どうすればこのような要件を達成できましたか?ログインの考え方は同じでしょうか?

答えて

0

私は、このようにそれを行うだろう:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    // show Welcome View 

    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    let welcomeController = mainStoryboard.instantiateViewControllerWithIdentifier("welcomeController") as! WelcomeController 
    self.window?.rootViewController = welcomeController 

    // Override point for customization after application launch. 
    return true 
} 

アプリは

を開始し、MainTabBar

func showMainTab() { 
    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    let tabBarController = mainStoryboard.instantiateViewControllerWithIdentifier("tabBarController") as! MainTabBarController 
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    appDelegate.window?.rootViewController = tabBarController 
} 
をロードするためにWelcomeViewにこれを使用されるとき、これは「歓迎ビュー」と表示されます
1

AppDelegateではなく、最初のViewControllerからウェルカム画面をインスタンス化してみてください。

viewDidLoad()の最初のViewControllerでは、NSUserDefaultsを使用してisFristOpenAppをチェックし、アプリが初めてユーザーに公開された場合は、ストーリーボードIDを使用してストーリーボードからインスタンス化を呼び出します。このように:どこか

override func viewDidLoad() { 

let userDefaults = NSUserDefaults.standardUserDefaults() 

let isFristOpen = userDefaults.boolForKey("isFristOpenApp") 

     if isFristOpen == true { 
      if let welcomeController = storyboard?.instantiateViewControllerWithIdentifier("WelcomeController") as? WelcomeController { 

       self.presentViewController(welcomeController , animated: true, completion: nil) 
      } 

     } 
} 

そして、あなたのwelcomeControllerあなたはfalseにisFirstOpenを設定することができます内側:

let userDefaults = NSUserDefaults.standardUserDefaults() 
userDefaults.setBool(false, forKey: "isFristOpenApp") 
関連する問題