5652


**編註** : 前提として、画面のデザインはストーリーボードで行い、遷移のみをコードで行おうとしています。

AppDelegate上にて以下のような画面遷移を実装する場合、ビルドは出来るのですが  
identifierを入れていないため、画面は真っ黒のままです。  
どのようにidentifierを書き込んだらいいのでしょうか？

[code]

    import UIKit
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {
    
        var window: UIWindow?
        var viewController: ViewController?
    
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
            self.window?.rootViewController = ViewController()
            return true
        }
    
[/code]

【補足】  
遷移先のViewControllerは全てStoryboardで作成し、コードで書いたものではないため、  
この質問([Xcode(Swift)でのセグエを使わない画面遷移について](https://ja.stackoverflow.com/questions/4371/xcodeswift\)%E3%81%A8%E5%90%8C%E3%81%98%E3%82%88%E3%81%86%E3%81%AA%E7%8A%B6%E6%85%8B%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%97%E3%81%BE%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99)。  
storyboardでの実装のため、ViewControllerとAppDelegateの指示がバラバラになっていて、ビルド成功しても、画面が黒くなってしまうのでしょうか？


CC BY-SA 3.0
2015-01-31T05:21:58.377
5650
2015-02-01T23:16:36.147
2017-04-13T12:52:38.920
-1
5832
question
swift
画面遷移にストーリーボードを使用しない場合にAppDelegateに書くべきコードを教えてください


前提としてAppDelegateでやる処理は

  * `self.window`の作成
  * `self.window.rootViewController`の設定
  * `self.window.makeKeyAndVisible()`の呼び出し

だったと記憶しています。

それから質問の`UIViewController`は`storyboardWithName:bundle:`で`UIStoryboard`を取得して`instantiateViewControllerWithIdentifier:`で得られるので、結局

[code]

    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
    let storyboard = UIStoryboard(name: "storyboard", bundle: nil)
    self.viewController = storyboard.instantiateViewControllerWithIdentifier("identifier")
    self.window!.rootViewController = self.viewController
    self.window!.makeKeyAndVisible()
    
[/code]

でしょうか。

`"storyboard"`は拡張子を除くストーリーボードのファイル名（例:「Main.storyboard」->「Main」）、`"identifier"`はストーリーボードでUIViewControllerに設定したStoryboard
IDです。


CC BY-SA 3.0
2015-01-31T06:04:24.900
5652
2015-01-31T06:15:01.947
2015-01-31T06:15:01.947
5750
5650
answer