swift - 如何为 HomeController 制作 viewDidAppear 显示?
问题描述
我已经使用了下面的层次结构设置,这对我有很多用途,但现在我遇到了限制:ContainerController 包含 HomeController 和 MenuController 以在菜单选项视图中创建幻灯片。其中一个菜单选项提供了一个收藏夹控制器。
这是我的限制:我想将数据从收藏夹控制器委托回 HomeController 并更新我的 HomeController 上的一些值。当我关闭 FavoritesController 时,它显示状态 viewDidDisappear 但 HomeController 不显示状态 viewDidAppear 即使我在 iPhone 上直观地看到它。
我知道存在层次结构脱节 - 有什么建议可以解决吗?
以下是主要代码摘录:
window?.rootViewController = ContainerController()
class ContainerController: UIViewController {
var menuController: MenuController!
var centerController: UIViewController!
var isExpanded = false
func configureHomeController() {
let homeController = HomeController()
homeController.delegate = self
centerController = UINavigationController(rootViewController: homeController)
view.addSubview(centerController.view)
addChild(centerController)
centerController.didMove(toParent: self)
}
func configureMenuController() {
if menuController == nil {
menuController = MenuController()
menuController.delegate = self
view.insertSubview(menuController.view, at: 0)
addChild(menuController)
menuController.didMove(toParent: self)
}
}
func didSelectMenuOption(menuOption: MenuOption) {
switch menuOption {
case .Favorites:
let controller = FavoritesController()
present(UINavigationController(rootViewController: controller), animated: true, completion: nil)
...
}
}
extension ContainerController: HomeControllerDelegate {
func handleMenuToggle(forMenuOption menuOption: MenuOption?) {
if !isExpanded {
configureMenuController()
}
isExpanded = !isExpanded
animatePanel(shouldExpand: isExpanded, menuOption: menuOption)
}
}