0

アプリの起動時に何らかの条件に基づいて rootVC を変更しようとしています。私の VC はすべてストーリーボードで作成されているため、次のようにしています。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
                    // Override point for customization after application launch.

                    checkPhotoLibraryAccess()

                    return true
                }

func checkPhotoLibraryAccess(){

                    if PHPhotoLibrary.authorizationStatus() == PHAuthorizationStatus.denied ||  PHPhotoLibrary.authorizationStatus() == PHAuthorizationStatus.notDetermined {
                        showPermissionVC()
                    } else {
                        showContainerVC()
                    }
                }

func showPermissionVC (){

                    let storyboard = UIStoryboard(name: "Main", bundle: nil)

                    let rootVC = storyboard.instantiateViewController(withIdentifier: "askPermissionVC")

                    UIApplication.shared.windows.first?.rootViewController = rootVC

                    self.window?.makeKeyAndVisible()

                }

func showContainerVC (){

                    let storyboard = UIStoryboard(name: "Main", bundle: nil)

                    let rootVC = storyboard.instantiateViewController(withIdentifier: "containerVC")

                    UIApplication.shared.windows.first?.rootViewController = rootVC

                    self.window?.makeKeyAndVisible()

                }

コードと競合しないように、最初の VC を示す矢印をストーリーボードから削除しました。ただし、このエラーが発生し、シミュレーターの画面には何も表示されませんでした:

[アプリケーション] UIMainStoryboardFile 'Main' の既定のビュー コントローラーのインスタンス化に失敗しました。指定されたエントリ ポイントが設定されていない可能性があります。

info.plist から「メイン ストーリーボード ファイルのベース名」プロパティを削除しました。今回はエラーはなくなりましたが、まだ何も表示されません。私は何を間違っていますか?

4

1 に答える 1

0

ウィンドウをプログラムで初期化する必要があります。

didFinishLaunchingWithOptionsメソッドの先頭に次を追加してみてくださいAppdelegate

self.window = UIWindow()

また、メソッドshowPermissionVCshowContainerVCメソッドで、次の行を置き換えます。

UIApplication.shared.windows.first?.rootViewController = rootVC

と:

window?.rootViewController = rootVC
于 2019-03-25T17:23:32.730 に答える