首页 > 解决方案 > 如何为 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)
    }
}

标签: swift

解决方案


推荐阅读