84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
想在baseViewController基类里做判断隐藏tabBar的逻辑,不知道应该写在哪里比较好,如何判断?我想到的是用navigationController.viewControllers.count的数量,但会涉及到两个viewContoller间声明周期的交替,在viewwillAppear和viewWillDisappear里写的,写的有问题,请问如何判断这个比较好,或者隐藏tabbar在哪里写比较好,谢谢
走同样的路,发现不同的人生
写在init()方法;
个人觉得在navigation的代理方法里。
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 首先获取程序的主窗口 UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow //获取tabBarVC UITabeBarController *tabBarVC = (UITabBarController*)keyWindow.rootViewController; //移除系统的tabBarButton for(UIView *tabBarButton in tabBarVC.tabBar.subviews) { if ([tabBarButton isKindOfClass:NSClassFromString(@“UITabBarButton”)]){ [tabBarButton removeFromSuperview]; } } }
应该写在layoutsubviews 里面
我也是在 nav 里面做这件事
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { if (self.childViewControllers.count >= 1) { viewController.hidesBottomBarWhenPushed = YES; } [super pushViewController:viewController animated:animated]; }
CocoaTouch 在一个NavigationController进行Push操作的时候,隐藏TabBar的方式,应该是调用的sendSubviewToBack这个方法把TabBar给放到后面去。我在自定义转场动画时,通过这种方式做到和苹果默认的一样的效果。你可以试试。
sendSubviewToBack
let needPushTabBar = toVC.navigationController?.tabBarController != nil && toVC.hidesBottomBarWhenPushed && toVC.navigationController?.childViewControllers.count == 2 if needPushTabBar { toVC.navigationController?.tabBarController?.view.sendSubviewToBack(tabBar!) }
/** * 重写push方法实现界面跳转后的各种设置 */ - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{ if (self.childViewControllers.count > 0) { // push跳转后隐藏底部TabBar栏 viewController.hidesBottomBarWhenPushed = YES; } // 先设置属性,再调用super的push方法,避免设置的属性被覆盖 [super pushViewController:viewController animated:animated]; }
写在init()方法;
个人觉得在navigation的代理方法里。
应该写在layoutsubviews 里面
我也是在 nav 里面做这件事
CocoaTouch 在一个NavigationController进行Push操作的时候,隐藏TabBar的方式,应该是调用的
sendSubviewToBack
这个方法把TabBar给放到后面去。我在自定义转场动画时,通过这种方式做到和苹果默认的一样的效果。你可以试试。