如何从另一个视图控制器中删除选项卡栏控制器的子视图?

时间:2020-01-03 20:14:05

标签: uitabbarcontroller

我已经研究了类似的主题,但是没有找到我需要的东西,而我尝试失败的一切。 这是正在发生的事情: 1.标签栏控制器(以集合视图作为子视图)-> 2.带有根的导航控制器-> 3.view控制器。 当我进入vc 3时,我需要隐藏标签栏,我可以并且可以使用它,但是我还需要告诉标签栏控制器的集合视图从其超级视图中删除。这是行不通的,据我了解,我无法以尝试的方式做到;我所能尝试的就是获取标签栏控制器类的实例,并告诉子视图删除自身,但这不起作用。当我使用VC3时,视图仍然存在。当从堆栈中弹出vc3时,视图需要与选项卡栏一起重新出现。有什么建议可以让我摆脱自己发现的这个泡菜吗?我的尝试如下。谢谢。

在标签栏控制器内部:

internal lazy var collectionView: MenuTypeCV = {
        let mainMenu = MenuTypeCV(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
        mainMenu.defaultSelectedMenuTab = IndexPath(item: 0, section: 0)
        mainMenu.delegate = self
        mainMenu.dataSource = self
        mainMenu.backgroundColor = UIColor.customColoursForAllElements(colourName: "background blue")
        return mainMenu
    }()

在第三个vc中:

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        tabBarController?.tabBar.isHidden = true
        let mainMenu = ProgramMainMenu()
        mainMenu.collectionView.removeFromSuperview() // does not work
    }
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        tabBarController?.tabBar.isHidden = false
        // reverse needs to happen.
    }

我还尝试将用于删除和再次添加集合视图的代码放入选项卡栏控制器的2个函数中,但是什么也没有发生。

0 个答案:

没有答案