Контроллер представления раскадровки не отображается, когда программно установлен в качестве корневого контроллера представления - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь изменить rootVC в зависимости от условий запуска приложения.Все мои ВК сделаны в раскадровке, поэтому я делаю это так:

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()

                }

Я убрал стрелку, показывающую начальный ВК из раскадровки, чтобы у него не было конфликта с кодом,Тем не менее, я получил эту ошибку, и на экране симулятора ничего не показывалось:

[Приложение] Не удалось создать экземпляр контроллера представления по умолчанию для UIMainStoryboardFile 'Main' - возможно, назначенная точка входа не установлена?

Я удалил свойство "Основное имя файла раскадровки" из info.plist.На этот раз ошибка исчезла, но все равно ничего не появляется.Что я делаю не так?

1 Ответ

0 голосов
/ 25 марта 2019

Вам нужно программно инициализировать окно.

Попробуйте добавить следующее в начало вашего didFinishLaunchingWithOptions метода в Appdelegate

self.window = UIWindow()

Также в ваших showPermissionVC и showContainerVC методах замените эту строку:

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

с:

window?.rootViewController = rootVC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...