gpt4 book ai didi

ios - 具有UINavigationController的UITabBarController,在hidesBottomBarWhenPushed而不是UITabBarController标签栏上隐藏UINavigationController工具栏

转载 作者:行者123 更新时间:2023-12-01 19:24:00 25 4
gpt4 key购买 nike

我有一个带有三个视图控制器的UITabBarController根视图控制器,其中一个是带有包含UINavigationControllerUIViewControllerUISearchDisplayControllerUITableViewUINavigationController工具栏未隐藏。

但是,当我在UITableView中选择一行时,我想推送另一个UIViewController。按下此UIViewController时,UINavigationController工具栏应滑出,并且UITabBarController标签栏应保持可见。

我尝试将推送的UIViewController的hidesBottomBarWhenPushed属性设置为true(当UINavigationController不嵌套在UITabBarController中时,它提供了预期的行为)。不幸的是,当hidesBottomBarWhenPushed设置为true时,滑出UINavigationController工具栏时,滑出UITabBarController,使UINavigationController在所推送的UIViewController中作为底部栏可见。

按下时如何滑出UINavigationController工具栏,而不是UITabBarController标签栏?

编辑#1 :
我能想到的唯一可能的解决方案是,无需使用UINavigationController工具栏,只需在包含UIToolbarUIViewController视图的底部添加UITableView即可。这将确保在按下新的UIToolbarUIViewController滑出,并在弹出新的UIViewController时滑入。唯一的问题是,对于iPhone和iPod Touch,与UINavigationController工具栏不同,当将设备旋转到其中时,UIToolbar实例(44像素)的高度不会缩小到30+像素(就像UINavigationController工具栏一样)。横向。如果这是唯一合法的解决方案,我如何更改UIToolbar的高度以使其与景观中UINavigationController工具栏的高度匹配?

编辑#2 :
关于EDIT#1,我想可以在UIToolbar方法中更改willRotateToInterfaceOrientation的框架。不过,我仍然想找到一种解决方案,以滑出UINavigationController工具栏。比为每个UIToolbar创建一个单独的UIViewController更好,我希望有一个底部工具栏。

编辑#3 :
基本上,这就是我所拥有的(这是hidesBottomBarWhenPushed的结果):http://flic.kr/p/bcjydn

而且,这是我想要实现的目标:http://flic.kr/p/bcjybK

编辑#4 :
首先,感谢您的宝贵时间。其次,不幸的是,UINavigationController中的setToolbarHidden:animated:方法无法生成动画中的幻灯片/幻灯片,如使用setHidesBottomBarWhenPushed:所见:(请参阅 EDIT#3 中的链接,具体来说是所需动画的第二个链接) 。例如,假设我们写:

- (void)viewWillAppear:(BOOL)animated
{
[self.navigationController setToolbarHidden:NO animated:NO];
[super viewWillAppear:animated];
}

在父视图控制器(未隐藏工具栏的视图控制器)中,并假设我们编写:
- (void)viewWillAppear:(BOOL)animated
{
[self.navigationController setToolbarHidden:YES animated:NO];
[super viewWillAppear:animated];
}

在子视图控制器(隐藏工具栏的视图控制器)中。

一旦将子视图控制器从父视图控制器推到UINavigationController堆栈上,就会调用子视图控制器viewWillAppear:方法。这将简单地隐藏UINavigationController工具栏(在开始推送动画之前),从而暴露位于UINavigationController工具栏下方的UIWindow部分。推入动画的其余部分将按预期执行(UINavigationController工具栏在子视图控制器中仍然不可见,所有大小均已适当调整)。然后,当我们弹出子视图控制器时,将为parentViewController调用viewWillAppear:方法,该方法将取消隐藏UINavigationController工具栏(使工具栏在子视图控制器中可见),然后将执行弹出动画。弹出动画的其余部分将按预期执行(UINavigationController工具栏在父视图控制器中仍然可见,所有大小均已适当调整)。

有点想这个问题将导致麻烦。我唯一剩下的想法是:

1) 编辑#1 (尽管该实现受到无法适当地或合法地改变iPod Touch或iPhone的标准UIToolbar实例高度的限制,这是我不愿使用UINavigationController工具栏的原因之一)。

2)子类UITabBar或UITabBarController试图防止setHidesBottomBarWhenPushed:方法意识到UITabBarController标签栏是底部栏。基本上,绕过选项卡栏并改为传递UINavigationController工具栏。可能是最有希望的想法,但可能是最困难的想法(因为对setHidesBottomBarWhenPushed:内部知识的了解是有限的,并且可能需要 private API)。

最佳答案

当您按下导航栏控制器时
像这样写代码

YourController = [[YourController alloc] initWithNibName:@"YourController" bundle:nil]
controller.hidesBottomBarWhenPushed = TRUE;
[self.navigatoinController pushViewController:controller Animated:YES];

//// Try this code where you want to hide navigation bar

-(void)viewWillAppear{
self.navigationController.navigationBarHidden = TRUE;
}

关于ios - 具有UINavigationController的UITabBarController,在hidesBottomBarWhenPushed而不是UITabBarController标签栏上隐藏UINavigationController工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8846181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com