我正在尝试在基于选项卡的应用程序中实现滑出菜单。我有一个包含 MenuViewController 和 UITabBarController 的容器控制器,它符合 MasterDelegate 协议,该协议告诉容器在按下位于单个选项卡上的汉堡包按钮时滑出 MenuViewController。我的问题是 UITabBarController 的 coordinator 属性在配置 UITabBarController 之后才设置,因此 UITabBarController 中的属性以及包含按钮的选项卡的 ViewController 始终为零。
这是属于设置 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 属性是否为 nil。这是在容器控制器打印上述两个语句之前打印的。由于打印了第二条打印语句,我知道正在设置协调器,但是设置得太晚了。
我的问题是如何在 UITabBarController 配置完成之前设置 masterDelegate ?或者有没有办法在事后设置该属性?