web-dev-qa-db-ja.com

ルートビューコントローラーを手動で設定すると黒い画面が表示されるのはなぜですか?

Xcode 11、Beta 5を使用してiOS 13のルートビューコントローラーを手動でセットアップしました。info.plistでmainへの参照を削除するなど、展開情報でmainへの参照を削除しました。ウィンドウは、SceneDelegateで実行され、willConnectTo関数にネストされます。通常、ステップを逃した場合、アプリはクラッシュします。今、私は私のビューコントローラーが何のために設定されているのか、例えば赤い背景を見るのではなく、空白の黒い画面を取得しています。これらはすべて、ベータ5より前のバージョンで機能します。

シミュレータですべてのコンテンツと設定を消去しました。ビルドフォルダーをクリアし、物理デバイスでアプリを実行しました。 Xcode 11、ベータ5を搭載した別のコンピューターも使用しました。すべての結果が同じ空白の黒い画面になります。何が欠けていますか?

以下は、willConnectTo関数にネストされたSceneDelegateファイルのルートビューコントローラーの手動設定です。

let viewCon = ViewController()
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = viewCon
window?.makeKeyAndVisible()
5
Adnan
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

    guard let windowScene = (scene as? UIWindowScene) else { return }

    let window = UIWindow(windowScene: windowScene)
    self.window = window
    let mainstoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let newViewcontroller:UIViewController = mainstoryboard.instantiateViewController(withIdentifier: "YourVCName") as! YourVCName
    navigationController = UINavigationController(rootViewController: newViewcontroller)
    window.rootViewController = navigationController
    window.makeKeyAndVisible()
}

このコードを試してください!! iOS 13を使用していて、xcodeが更新されている場合は、ルートコントローラーをアプリデリゲートではなくシーンデリゲートに設定する必要があります。

1
Vipin Pareek