nso*_*sof 6 iphone events show hide tabbar
我在我创建的Tab Bar控制器的自定义子类中有一个Nav控制器.
每当显示的控制器中的一个试图隐藏或显示标签栏时,我想从(自定义)标签栏中知道.(例如,将具有hidesBottomBarWhenPushed = YES的VC推送到Nac控制器上时).
总之,我希望收到隐藏/显示标签栏的事件的通知,但在Apple的参考资料中找不到任何内容.我尝试查看UITabBar,UITabBarDelegate,UITabBarController和UITabBarControllerDelegate,但似乎只提供与标签栏项相关的功能.
提前致谢.
ndf*_*red 12
如果您使用的是标签栏控制器,UIKit会明确声明将在标签栏控制器的上下文中显示的每个导航控制器实例都属于其viewControllers属性.现在每个UINavigationController实例都有一个委托,它定义了一个navigationController:willShowViewController:animated:方法,可以让你知道何时将视图控制器推到它上面.
通过将标签栏控制器设置为推送到其上的每个导航控制器的委托,您可以分析正在推送的视图控制器是否已设置hidesBottomBarWhenPushed属性并在此情况下生成事件.
用于隐藏标签栏控制器标签栏的算法如下:当导航控制器上按下视图控制器时,如果导航控制器本身包含在标签栏控制器中,则导航控制器的导航堆栈中的任何视图控制器都具有该hidesBottomBarWhenPushed属性设置,然后应隐藏标签栏.
因此,当选择导航控制器并且其堆栈中的一个视图控制器具有hidesBottomBarWhenPushed属性集时,将隐藏选项卡栏.
子类化 UINavigationController 并实现 hidesBottomBarWhenPushed 后面的 setter(或子类化 UIViewController 以直接子类化 hidesBottomBarWhenPushed 方法)并将调用委托给 UITabBar(通过直接调用或 NSNotification)。