我有一个(子类)UITabbarController有4个选项卡,每个选项卡都有一个(子类)UINavigationController,有3个级别的视图控制器导航层次结构。
标签栏仅在每个UINavigationController根视图控制器中可见。
当UINavigationController推送第二级视图控制器时,标签栏会与根视图控制器正确滑出:
直到这里没问题,一切都是正确的。
第2步,完全自定义标签栏
我实现了一个浮动标签栏(UIView的子类而不是UITabBar),将标签栏添加到UITabbarController视图(注意:默认标签栏添加到同一视图中)但导航控制器推送第二个时的行为导航级别不同,标签栏仍然可见:
显然UINavigationController管理标准标签栏并使用根视图控制器移动它,任何想法如何使用我的自定义标签栏复制此行为?我正在寻找一种智能且可重用的方法,而不是在每个根视图控制器中手动执行。
此外,我创建了一个MyTabBar:UITabBar类,并更改了Storyboard中UITabbarController navigationBar的类类型,以拦截setHidden方法并隐藏我的自定义标签栏:
- (void)setHidden:(BOOL)hidden {
if (hidden)
[[NSNotificationCenter defaultCenter] postNotificationName:kNOTIF_TabBarNotificationHideBar object:nil];
else
[[NSNotificationCenter defaultCenter] postNotificationName:kNOTIF_TabBarNotificationShowBar object:nil];
[super setHidden:YES];
}
工作正常。