2017-02-11 5 views
4

私のappdelegateではglobUs.hasNameかどうかをチェックしたいと思います。アプリのEntry Pointを私のmainストーリーボードにしたいと思っています。アプリのEntry Pointが私のnewUserストーリーボードになるようにします。アプリケーションのエントリポイントを設定するにはどうすればよいですか?できない場合、この機能を実装する最も効果的な方法は何ですか?AppDelegateでApp Entryポイントをプログラムで設定する

+0

didFinishLaunchingWithOptions関数の中で、あなたの好みのviewControllerとしてself.window?.rootViewControllerを設定するだけです。 –

答えて

3

エントリポイントがないことを考慮してください。次に、appDelegateで変数をテストし、それに応じて適切なストーリーボードを選択します。次に、そのストーリーボードからView Controllerを表示します。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

    if globUs.hasName { 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let vc = storyboard.instantiateViewController(withIdentifier: "FirstMainVC") 
     self.window = UIWindow(frame: UIScreen.main.bounds) 
     self.window?.rootViewController = new 
     self.window?.makeKeyAndVisible() 
    } 
    else { 
     let storyboard = UIStoryboard(name: "NewUser", bundle: nil) 
     let vc = storyboard.instantiateViewController(withIdentifier: "FirstNewUserVC") 
     self.window = UIWindow(frame: UIScreen.main.bounds) 
     self.window?.rootViewController = welcomeVC 
     self.window?.makeKeyAndVisible() 
    } 

    return true 
} 
+0

このAppDelと同様のメソッドを使用すると、SIGABRTがスローされます。 「NSBundle(ロード済み) '" UIStoryboardコンストラクタで" name: "フィールドの意味は何ですか?それは恣意的ですか、私はMain.storyboardのファイル名を使用する必要がありますか? –

+0

これはうまくいきました、ありがとう! –

+0

@GabeSpoundはい、ファイル名を使用しています – Shades

0

var sb = UIStoryboard(name: "OneStoryboard", bundle: nil) 
/// Load initial view controller 
var vc = sb.instantiateInitialViewController() 
/// Or load with identifier 
var vc = instantiateViewController(withIdentifier: "foobarViewController") 

/// Set root window and make key and visible 
self.window = UIWindow(frame: UIScreen.mainScreen.bounds) 
self.window.rootViewController = vc 
self.window.makeKeyAndVisible() 

またはストーリーボードに手動セグエを試してみてください。手動でセグを実行するには、最初にストーリーボードに識別子付きのセグを定義してから、ビューコントローラでperformSegue(withIdentifier:sender:)を呼び出す必要があります。

+0

私は上記の答えのために残したコメントをチェックしてください、それはここにも関係します。 –

+0

私はこれを有効にしましたが、他の方法はより効果的と思われます –

関連する問題