Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 当有人隐藏/显示选项卡栏时,是否有用于通知的选项卡栏事件?_Iphone_Events_Hide_Show_Tabbar - Fatal编程技术网

Iphone 当有人隐藏/显示选项卡栏时,是否有用于通知的选项卡栏事件?

Iphone 当有人隐藏/显示选项卡栏时,是否有用于通知的选项卡栏事件?,iphone,events,hide,show,tabbar,Iphone,Events,Hide,Show,Tabbar,在我创建的选项卡栏控制器的自定义子类中有一个导航控制器 我想从(自定义)选项卡栏中了解显示的某个控制器何时试图隐藏或显示选项卡栏。(例如,在Nac控制器上按hidesBottomBarWhenPushed=YES的VC时) 简言之,我想知道隐藏/显示选项卡栏的事件,但在Apple的参考中找不到任何内容。我试着查看了UITabBar、uitabbarelegate、UITabBarController和UITabBarControllerDelegate,但它们似乎都只提供了与选项卡栏项相关的功能

在我创建的选项卡栏控制器的自定义子类中有一个导航控制器

我想从(自定义)选项卡栏中了解显示的某个控制器何时试图隐藏或显示选项卡栏。(例如,在Nac控制器上按hidesBottomBarWhenPushed=YES的VC时)

简言之,我想知道隐藏/显示选项卡栏的事件,但在Apple的参考中找不到任何内容。我试着查看了UITabBar、uitabbarelegate、UITabBarController和UITabBarControllerDelegate,但它们似乎都只提供了与选项卡栏项相关的功能


提前感谢。

将UINavigationController子类化,并在hidesBottomBarWhenPushed后实现setter(或将UIViewController子类化,以直接将hidesBottomBarWhenPushed方法子类化),并将调用委托给UITabBar(通过直接调用或NSNotification)。

如果您使用的是选项卡栏控制器,UIKit明确声明,将显示在选项卡栏控制器上下文中的每个导航控制器实例都将位于其
viewControllers
属性中。现在,每个
UINavigationController
实例都有一个委托,它定义了一个
navigationController:willShowViewController:animated:
方法,该方法允许您知道视图控制器何时被推到它上面

通过将选项卡栏控制器设置为推送到其上的每个导航控制器的代理,可以分析正在推送的视图控制器是否设置了
hidesBottomBarWhenPushed
属性,并在这种情况下生成事件

用于隐藏选项卡栏控制器的选项卡栏的算法如下:当视图控制器被推到选项卡栏控制器中包含的导航控制器上时,如果导航控制器的导航堆栈中的任何视图控制器在按下时具有
hidesbottombarwhen
属性集,然后应该隐藏选项卡栏


因此,当选择导航控制器时,选项卡栏将隐藏,并且其堆栈中的一个视图控制器在按下时设置了
hidesbottombar
属性。

我不确定是否获得了它。hidesBottomBarWhenPushed是表示状态的属性。属性不包含隐藏栏的实际代码(该属性通常在控制器推送到导航vc堆栈之前设置)。如何将选项卡栏控制器设置为导航控制器的代理?我犯了一个错误。我正在尝试
self.navigationController?.delegate=self.tabBarController
错误-
无法分配UITabBarController类型的值?要键入UINavigationControllerDelegate?
请使用
self.navigationController?.delegate=self.tabBarController as解决错误!MyCustomTabBarViewController