【问题标题】:Navigation within a partially-shown UIView在部分显示的 UIView 中导航
【发布时间】:2013-08-09 14:21:45
【问题描述】:

(这是我上一个问题的后续:How to accomplish a "90% slide" between two UIViews

当前状态:

作为背景,我有一个容器视图控制器,它通过根据需要“进出”滑动来管理两个单独的 UIView(及其各自的 UIViewController):

感谢 @rdelmar 的指导,我现在可以正常工作了。

问题:

这是我的下一个问题:我希望辅助视图(上面的黄色)是“可导航的”——也就是说,我希望有一个可选项目的 UITableView,当被触摸时,在该较低框架中显示不同的 UIView :

我的想法:

我曾考虑在较低的框架中嵌入一个 UINavigationView 控制器来处理这种导航,但我了解到(通过多个来源,例如 iPhone UINavigationController inside UIViewController)无法将 UINavigationController 的功能“嵌入”到现有 UIView 中 - 它旨在接管整个屏幕。

所以,如果一个 UINavigationController 出来了(你可以告诉我它是否真的存在,或者我的上述结论是否不正确),听起来我不得不手动创建一个层次结构,以及管理那些UIViews 进入和离开下框架。这不是世界上最糟糕的事情,但当我想到 UINavigationController 免费提供此功能时,它就会刺痛。

一如既往,我们非常感谢您的想法。谢谢!

【问题讨论】:

  • 视图层次结构和视图控制器层次结构是不同的东西。你确定你只是想切换视图吗?如果是这样,则无需在视图中嵌入导航控制器。例如,transitionFromView 及其变体。
  • @NiravBhatt - 好问题:我设想下框架中的 每个 视图都由同一个 UIViewController 管理。所以,为了回答你的问题,我认为我们在谈论“视图层次结构”而不是“视图控制器层次结构” - 是吗?
  • 是的,从视图控制器的角度考虑不同之处:视图控制器所做的只是提供更多空间来放置视图/控件,以及为视图生命周期提供平台的附加类。你想要这些功能吗?例如,当您的视图被加载、出现在屏幕上等时,您喜欢被提醒吗?如果是的话,给那个视图它自己的视图控制器。当然,您需要 VC 来处理某些类型的转换,例如弹出窗口等,尽管我不知道有任何调整允许它在没有单独 VC 的情况下实现。

标签: ios cocoa-touch uinavigationcontroller


【解决方案1】:

UINavigationController肯定没出过:)

你说

我有一个容器视图控制器,它管理两个单独的 UIView(以及它们各自的 UIViewController)

在这里使用导航控制器只是一个微小的变化。

不要添加较低的UIViewController,而是添加带有UIViewControllerUINavigationController 作为它的根视图控制器。

即而不是

// If 'small' is the name of your smaller view controller
[self addChildViewController:small];
[self.view addSubview:small.view];

UINavigationController *n = [UINavigationController alloc] initWithRootViewController:small];
n.view.frame = small.frame;
[self addChildViewController:n];

[self.view addSubview:n.view];

您现在可以将新的视图控制器推入/弹出应用的底部。

我现在已经在一些应用程序(iOS 5 及更高版本)中完成了此操作,并且完全没有遇到任何问题。

PS 上面的代码是从内存中输入的,所以有些方法名可能不是相当正确的!

【讨论】:

    【解决方案2】:

    我建议将根视图控制器设置为您的 UINavigationController,并将齿轮视图简单地覆盖在顶部作为 UINavigationController 的子视图。您可以使用 insertSubview:aboveSubview: 来执行此操作。

    这将为您简化很多事情,因为您的功能核心应该是根视图控制器。

    使用 UINavigationController 是非常可取的,因为您可以免费获得所有动画和堆叠逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-18
      • 2012-11-21
      • 2018-07-20
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      相关资源
      最近更新 更多