Я пытаюсь реализовать выдвижное меню в моем приложении на основе вкладок. У меня есть контроллер контейнера, который содержит MenuViewController и UITabBarController, и он соответствует протоколу MasterDelegate, который говорит контейнеру выдвигать MenuViewController при нажатии кнопки гамбургера, расположенной на отдельной вкладке. Моя проблема заключается в том, что свойство координатора для UITabBarController не устанавливается до тех пор, пока не будет настроен UITabBarController, и, таким образом, свойство в UITabBarController, а также в ViewController для вкладки, содержащей кнопку, всегда равно nil.
Здесь код, принадлежащий контейнеру, который устанавливает UITabBarController:
func configureHomeController() {
centerController = MainTabBarController()
// Make sure to set delegate of homeController
centerController.masterDelegate = self
print("MainContainterController: Setting the MainTabBarController delegate")
if centerController.masterDelegate != nil {
print("MainContainerController: MainTabBarController Delegate set")
}
view.addSubview(centerController.view)
// Add the navigationController containing the HomeController as a child to the ContainerController
addChild(centerController)
// Home controller didMove to the parent container of self, which is the ContainerController
centerController.didMove(toParent: self)
}
В TabBarController есть оператор печати, который выполняется после того, как настроен TabBarController, который сообщает мне, является ли свойство masterDelegate нулевым или нет. Это печатается прежде, чем контроллер контейнера напечатает два вышеупомянутых утверждения. Поскольку печатается 2-й оператор печати, я знаю, что координатор устанавливается, но он установлен слишком поздно.
Мой вопрос: как мне установить masterDelegate до того, как будет настроен UITabBarController? Или есть способ установить это свойство по факту?