用于具有转换的非导航应用程序的视图控制器/NIB 架构?

2024-05-16

我正在修补一个 iPad 应用程序(就像许多 iPad 应用程序一样),它不使用 UINavigation 根视图控制系统,因此我没有每个应用程序“视图”的自然所有权。我基本上有两个基本视图:文档列表视图和文档编辑视图。

我正在使用 UIView 动画来从选定的文档转到编辑视图。

我的顶部还有一个工具栏,它存在于两个“视图”中(带有不同的按钮)。

因为我没有 UINavigation 为我运行节目,所以我倾向于将越来越多的东西放入一个 NIB 和一个拥有整个容器的视图控制器中。但现在我试图弄清楚如何从文档列表视图切换到编辑视图(如果编辑视图位于不同的 NIB 内),同时也保留工具栏。

有人对这样的应用程序结构有想法或经验吗?我发现文档缺乏围绕代码/UI 结构的最佳实践,除了琐碎的单屏应用程序或完整的导航应用程序之外。

根据文档,您“不应该”让父/子视图控制器拥有同一“屏幕”的子组件,但这意味着一个巨大的视图控制器基本上包含整个应用程序,这是不对的。

不确定是否有“正确答案”;我正在寻找一些明智的例子或建议。几个月来没有人触及这个问题,因此我添加了赏金以产生良好的讨论。 :)

Thanks!

UPDATE:我不是在谈论分割视图,分割视图控制器显然可以很好地处理分割视图。相反,看看 Apple 的 iWork 应用程序(例如 Pages),它具有文档列表视图和独立的编辑视图,但这些视图通过动画相关联。

也许这里真正的问题是:您将如何(或者您甚至可以?)自己构建一个“容器”视图控制器,例如分割视图或导航控制器?你需要从头开始构建整个该死的东西吗?我感觉你是这样的,因为视图控制器之间的交互中似乎隐藏着连线。如果是这样,对此有何想法?


我认为视图控制器中唯一隐藏的接线是设置parentViewController,这是支持为分割和导航声明的类别所必需的。

视图控制器被设计为嵌套的,每个控制器都拥有视图层次结构的一部分。唯一的设计目标是没有视图控制器进入另一个控制器的视图层次结构。父视图控制器通常会调用添加子控制器,以便它可以在其拥有的视图层次结构中设置视图的框架。子视图控制器不应该对其控制的视图的超级视图执行任何操作,因为该视图由另一个控制器拥有。它不应该设置它控制的视图的中心或框架。

例如,导航控制器有一个push方法,它删除以前的控制器视图,添加新的控制器视图,并设置新添加的视图的框架。一般来说,父视图控制器可以自由设置子控制器视图的框架,但不能设置边界。

如果您想更改导航控制器的动画,我认为您应该首先使用animated: 参数实现每个方法。设置动画,然后在提交动画之前调用 super 并关闭动画标志。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于具有转换的非导航应用程序的视图控制器/NIB 架构? 的相关文章

随机推荐