Как программно создать экземпляр UITabBarController из раскадровки? - PullRequest
0 голосов
/ 29 марта 2019

У меня есть раскадровка, включающая сцену TabBarController. Я пытаюсь создать экземпляр программы программно, а затем установить его как rootViewController.

Я установил точку останова после установки переменной раскадровки и могу подтвердить, что она ее находит. Проблема происходит при загрузке сцены для TabBarController.

Я попытался создать пользовательский подкласс TabBarController и установить его в качестве имени класса в инспекторе идентичности, и я получил то же самое.

Я также пытался создавать экземпляры UIViewControllers в той же раскадровке, и они открываются нормально. Это просто происходит с TabBarController. Может быть, это ограничение и не может быть сделано.

@IBAction func loginButtonTapped(_ sender: UIButton) {
        let storyboard = UIStoryboard(name: StoryboardConstants.Composition, bundle: nil)
        if let vc = storyboard.instantiateViewController(withIdentifier: "Tabbar") as? UITabBarController {
            UIApplication.shared.keyWindow?.rootViewController = vc
        }
    }

Это ошибка, которую я получаю: * Завершение приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Не удалось загрузить контроллер представления сцены для идентификатора« Tabbar »' * Первый стек вызовов вызовов:

Ответы [ 3 ]

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

убедитесь, что вы добавили вкладку к цели проекта.Еще один вариант - очистить ваш проект, перестроить и проверить из инспектора идентификации, есть ли отключенное соединение от раскадровки.

enter image description here

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

Storyboard reference without name

Наконец-то получил его на работу! Поэтому в инспекторе удостоверений все настроено правильно, проблема была в том, что я не назначил раскадровку для ссылки раскадровки, которую я связал с TabBarController.

Ошибка не дала мне подсказку, но, надеюсь, это кому-нибудь поможет.

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

Вы не установили ID раскадровки для этого контроллера представления.

  1. Откройте раскадровку.
  2. Выберите желтый ViewController
  3. Нажмите инспектор личности (3-й кран в группе справа)
  4. Введите «Tabbar» в поле «Storyboard ID»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...