Наследовать ViewController от раскадровки - PullRequest
0 голосов
/ 09 марта 2020

У меня есть раскадровка с именем CustomComponents.storyboard, и я спроектировал BaseViewController в раскадровке. Например, я устанавливаю backgroundColor из BaseViewController в .green в Интерфейсном Разработчике. Я наследую RootViewController от BaseViewController. Я ожидаю, что backgroundColor из RootViewController будет .green.

Это мой RootViewController

class RootViewController: BaseViewController {

}

, а это мой BaseViewController

class BaseViewController: UIViewController {

}

оба класса пусты, и я только что установил backgroundColor в IB.

Но я вижу белый фон при запуске приложения. Но, когда цвет установлен программно в BaseViewController, зеленый цвет фона применяется к RootViewController, как и ожидалось.

Что мне не хватает, чтобы унаследовать BaseViewController, который разработан в раскадровке? По сути, я хотел бы создать свой BaseViewController в раскадровке. Что я делаю не так?

1 Ответ

0 голосов
/ 09 марта 2020

Вы можете сделать это программно, только если минимальное значение c вашего приложения iOS 13, потому что для этой цели доступен новый API, потому что раскадровка не содержит объявление класса , это архив закодированных экземпляр

Таким образом, если ваш BaseViewController имеет идентификатор, вы можете создать экземпляр RootViewController с закодированным родителем как

let rootController = UIStoryboard(name: "CustomComponents", 
    bundle: nil).instantiateViewController(identifier: 
                             "your_base_controller_identifier_here") { coder in
        RootViewController(coder: coder)
}

или если ваш контроллер root

let rootController = UIStoryboard(name: "CustomComponents", 
     bundle: nil).instantiateInitialViewController { coder in
        RootViewController(coder: coder)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...