多个 ViewController - 最佳方法

Posted

技术标签:

【中文标题】多个 ViewController - 最佳方法【英文标题】:Multiple ViewController - Best Approach 【发布时间】:2011-06-30 15:40:13 【问题描述】:

我有一个非常大的表单要在我的 ipad 应用程序中构建,我注意到要遵循哪种方法(在创建多个视图或多个视图控制器之间)。好吧,我决定拆分可能形成逻辑部分,所以我想使用带有根的 splitviewcontroller(带有部分的 tableviewcontroller)和每个部分的 multipleviecontrollers。当用户在 tableview 中选择一行时,我将显示相应的 viewcontroller。我在我的 app_delegate 中为每个视图控制器保存了一个引用,并且 app_delegate 也负责更改视图控制器。这是最好的方法吗?还有其他方法可以遵循吗?关于多视图,我想将多个视图放在同一个 xib 文件中,然后选择基于标签作为使用,点击 rootviewcontroller 的 tableview 中的行。

提前致谢。对不起我的英语不好.. 学习!

【问题讨论】:

【参考方案1】:

我会在这个主题上这样说:目前,如果您不使用 Apple 现有的类之一,例如UISplitViewController,同时在屏幕上显示多个视图控制器可能会出现问题。

主要问题是视图控制器想要响应的重要事件(旋转事件等)不会传递给它们。这不是一个巨大的痛苦,它只是需要考虑的事情 - 您通常会创建自己的父视图控制器,可以将这些事件传递给它的孩子。

现在,您正在使用拆分视图控制器,所以在这方面一切顺利。没有为拆分视图控制器中的细节控制器和主控制器提供相互通信的方法,但 Apple 建议您使用标准委托模式。如果您的应用程序相当简单,这肯定会像您现在一样在您的应用程序委托中发生。

如果您只针对 ios 5,则有一些与屏幕上同时显示的多个控制器相关的更改,但由于 NDA,我无法在此处讨论它们。您应该前往 Apple 的开发者论坛 (devforums.apple.com) 了解更多信息。

【讨论】:

感谢您的回复,但我现在的做法是,当用户点击主视图控制器中的特定行时,我必须将详细视图控制器更改为其他视图控制器,为此我放了一个导航控制器作为我的详细视图控制器,我必须更改其视图控制器数组以调出正确的视图控制器,这对我来说听起来很糟糕,但正如我在问题中所说的那样,是吗?有一个属性可以让我们平滑地更改细节视图控制器 whiteout 更改 viewcontrollers 属性?创建或更改数组只是为了实现这听起来很糟糕。【参考方案2】:

听起来我正在尝试和你做同样的事情(这里是大型保险表格,你的项目怎么样?)不幸的是,我无法提供帮助,因为你有点领先于我。通过点击我的 UITableViewController 中的 8 行,我已经能够在 8 个详细视图之间来回切换,而无需在任何地方保留对当前或前一个的引用。我输入到各种 TextFields 中的数据保持在应有的位置。

我目前每个详细视图都有一个 xxxViewController.h/.m 和相应的 .xib 文件。这是一个非常多的代码,但我看不出有任何其他方法可以做到这一点。现在我在让我的按钮按下处理程序触发时遇到问题。此外,我还必须在这些屏幕后面放置一个数据库。

你能克服你的问题吗?

谢谢,

杰夫在阿拉巴马州

【讨论】:

差不多!我仍在使用这种方法,目前它工作正常。每个 detailView 及其控制器都位于单独的文件中。我也没有找到任何其他方法。

以上是关于多个 ViewController - 最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

用于设置多步骤注册页面的最佳ViewController是什么?

在 ViewController 中创建选项卡视图的最佳方法是啥

通过 iCarousel 将信息传递给多个 viewController

将一个值映射到多个值的最佳方法[重复]

在 iOS 中切换视图控制器的最佳方法

XCode 文本字段将无法连接到 ViewController