【问题标题】:How to create custom view controller container using storyboard in iOS 5如何在 iOS 5 中使用故事板创建自定义视图控制器容器
【发布时间】:2011-12-28 16:13:26
【问题描述】:

在使用故事板功能的 iOS5 中,我想创建一个自定义容器,其中嵌入了 2 个ViewControllers。例如,将 Table 视图控制器和视图控制器都嵌入到一个 ViewController 中。

也就是说,一个视图控制器会有2个关系:

  1. 到表视图控制器
  2. 查看控制器,其中有 4 个 UIImage 视图或 UIButton

是否可以仅使用故事板的拖放功能而不以编程方式创建这种类型的关系?

【问题讨论】:

  • 你的例子有问题。 CustomViewController viewDidLoad 事件永远不会被触发……这正常吗?有没有办法解决这个问题?否则,这是一个非常好的帖子!谢谢。

标签: ios5 storyboard


【解决方案1】:

,你应该只有一个视图控制器来控制场景。然而,这个 viewController 可能有另外两个视图控制器来控制场景中的特定子视图。为此,您在场景视图控制器中创建属性,在您的情况下,一个用于 tableViewController,另一个用于您的视图。我喜欢把东西放在一起,所以我制作了这两个 viewControllers 插座并在界面构建器中创建它们。要在界面构建器中创建它们,请从对象库中拉入一个对象并将其类型设置为相关的 viewController。将它连接到您刚刚在场景的 viewController 中创建的适当插座 - 注意:这很重要,否则如果您使用 ARC 并导致应用程序崩溃,则 viewController 将被释放。然后将这些 viewController 连接到您希望它们控制的视图上,您​​就完成了。

如果您愿意,您也可以在场景视图控制器中实例化并跳上视图控制器。

希望这会有所帮助。

编辑:经过反思,这不是一个好主意,实际上违反了 HIG,您应该为每个内容屏幕只维护一个 ViewController,而是尝试创建一个合适的视图类并让单个视图控制器处理各种观点。

【讨论】:

  • 我们可以为视图创建出口,但如何在情节提要中为 viewController 创建出口?
  • 打开界面生成器并选择您的故事板。在右下角,您将看到对象库(从中提取视图控制器和视图)在搜索框中键入对象,您将看到黄色/橙色的小对象将其拖到您的场景中并在身份检查器中将其类型更改为你的视图控制器。然后连接场景中的视图以供其控制,仅此而已。在您的代码中,只需为您的视图控制器类设置一个 IBOutlet 并将对象连接到该类。
  • 但是如何连接一个视图来控制呢?我所做的如下:选择情节提要文件-> 拖动视图控制器(主视图控制器)、表视图控制器(子视图控制器之一)和另外 1 个 UIViewController(另一个子视图控制器)。然后在主视图控制器中,我为 UITableViewController 和 UIViewController 创建了 2 个 IBOutlets。然后选择 Main UIViewController-> 右键单击​​它并将创建的 IBOutlet 连接到 StoryBoard 中的 TableViewController。但它没有创建连接。如果我做错了什么,请告诉我
  • 我整理了一个例子,你可以在这里下载源代码,scott-sherwood.com/?attachment_id=564希望对你有帮助
  • Scott,关于您的编辑:iOS 5 中添加了 UIViewConroller Containment 就是为了这个目的(允许在一个“场景”中使用多个控制器)。我只是似乎文档和示例很简单,非常基本或不存在。你的例子是一个很好的开始。关于如何用 UINavigationController 代替 UITableView 有什么想法吗?
【解决方案2】:

有一种方法不是太 hacky。它在 UITabBarControllers 的以下 URL 中进行了描述,您可以使用列表中的第一个视图控制器控制第一个子视图,第二个控制另一个。或者,您可以调整代码以使用 UISplitViewController。

http://bartlettpublishing.com/site/bartpub/blog/3/entry/351

基本上,它通过在 iOS 完成配置后在运行时替换 tabbarcontroller 来工作。

【讨论】:

  • 仅供参考 - 从 iOS 7 开始,这不再起作用。可能有一种方法可以实现类似的效果,但我们将项目切换到标准标签栏。
猜你喜欢
  • 2013-02-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 2013-10-09
相关资源
最近更新 更多