我在我创建的选项卡栏 Controller 的自定义子类中有一个导航 Controller 。
每当显示的 Controller 之一尝试隐藏或显示选项卡栏时,我想从(自定义)选项卡栏内了解情况。 (例如,将具有 hidesBottomBarWhenPushed=YES 的 VC 推送到 Nac Controller 时)。
简而言之,我希望收到隐藏/显示选项卡栏的事件通知,但在 Apple 的引用资料中找不到任何内容。我尝试查看 UITabBar、UITabBarDelegate、UITabBarController 和 UITabBarControllerDelegate,但似乎都只提供与选项卡栏项目相关的功能。
提前致谢。
最佳答案
如果您使用标签栏 Controller ,UIKit 会明确声明将在标签栏 Controller 上下文中显示的每个导航 Controller 实例都将位于其 viewControllers
属性中。现在,每个 UINavigationController
实例都有一个委托(delegate),它定义了一个 navigationController:willShowViewController:animated:
方法,让您知道何时将 View Controller 推送到它上面。
通过将标签栏 Controller 设置为推送到其上的每个导航 Controller 的委托(delegate),您可以分析被推送的 View Controller 是否设置了 hidesBottomBarWhenPushed
属性,并在设置时生成事件案例。
用于隐藏标签栏 Controller 标签栏的算法如下:当将 View Controller 推送到本身包含在标签栏 Controller 中的导航 Controller 时,如果导航 Controller 的导航堆栈中存在任何 View Controller 设置了 hidesBottomBarWhenPushed
属性,则应隐藏选项卡栏。
因此,当选择导航 Controller 并且其堆栈中的 View Controller 之一设置了 hidesBottomBarWhenPushed
属性时,选项卡栏会隐藏。
关于iphone - 当有人隐藏/显示选项卡栏时是否有任何选项卡栏事件用于通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4563299/