(这是对我上一个问题的跟进:How to accomplish a "90% slide" between two UIViews)
当前状态:
作为背景,我有一个容器视图控制器,通过滑动它们来管理两个独立的UIView(以及它们各自的UIViewControllers)" in&out"必要时:
感谢@rdelmar的指导,我现在有了这个工作。
问题:
这是我的下一个问题:我希望次要视图(上面的黄色)是"可导航" - 也就是说,我希望有一个可选项的UITableView,当被触摸时,在该较低的框架中显示不同的UIView:
我的想法:
我曾考虑在下层框架中嵌入一个UINavigationView控制器来处理这种导航,但我(通过几个来源,例如iPhone UINavigationController inside UIViewController)学到了一个不能嵌入" UINavigationController在现有UIView中的功能 - 它旨在接管整个屏幕。
所以,如果一个UINavigationController已经出局(并且你可以告诉我它是否真的如此,或者我的上述结论是不正确的),听起来我还是要手动创建一个层次结构,排序和管理那些UIViews如何进入和离开下方框架。这不是世界上最糟糕的事情,但当我想到UINavigationController免费提供这个时,它会刺痛。
与往常一样,您的想法非常受欢迎。谢谢!
答案 0 :(得分:2)
UINavigationController
肯定不会出局:)
你说
我有一个容器视图控制器,它管理两个独立的UIViews(以及它们各自的UIViewControllers)
在这里使用导航控制器只是一个很小的改变。
不是添加较低的UIViewController
,而是添加UINavigationController
UIViewController
作为其根视图控制器。
即。而不是
// If 'small' is the name of your smaller view controller
[self addChildViewController:small];
[self.view addSubview:small.view];
DO
UINavigationController *n = [UINavigationController alloc] initWithRootViewController:small];
n.view.frame = small.frame;
[self addChildViewController:n];
[self.view addSubview:n.view];
现在,您可以在应用的底部部分上/下推出新的视图控制器。
我现在已经在几个应用程序(iOS 5及更高版本)中完成了此操作,并且没有遇到任何问题。
PS上面的代码是从内存中输入的,因此某些方法名称可能不是完全正确!
答案 1 :(得分:0)
我建议将根视图控制器设置为UINavigationController,并简单地将齿轮视图作为UINavigationController的子项覆盖在顶部。您可以使用insertSubview:aboveSubview:来执行此操作。
这会为您简化很多事情,因为您的功能核心应该是根视图控制器。
使用UINavigationController是非常可取的,因为您可以免费获得所有动画和堆叠逻辑。