如何在另一个xib的视图中嵌入一个xib的UIViewController视图?

时间:2011-02-11 06:22:45

标签: iphone ios uiview uiviewcontroller interface-builder

MyViewController.xib将File的Owner类设置为MyViewControllerUIViewController的子类),File的Owner视图连接到包含一些子视图的UIView

OtherViewController.xib将File的Owner类设置为UIViewController,将File的Owner视图连接到空UIView

Interface Builder中是否可以在OtherViewController.xib中的视图中嵌入MyViewController的视图?

我尝试将一个MyViewController的实例添加到OtherViewController.xib中,但是我不能将它放在视图中(因为它不是UIView)而且我无法进入视图与MyViewController.xib中的MyViewController相关联(仅限视图控制器本身,并且它没有连接到任何内容,使其转到OtherViewController.xib)。

4 个答案:

答案 0 :(得分:7)

你可能不想这样做。请遵循View Controller编程指南中的警告:

  

注意:如果要将视图层次结构划分为多个子区域并分别管理每个子区域,请使用通用控制器对象(从NSObject降序的自定义对象)而不是视图控制器对象来管理每个子区域。然后使用单个视图控制器对象来管理通用控制器对象。

其视图未填充窗口的UIViewController子类将不会像您期望的那样运行。它不会接收视图控制器生命周期消息,轮换消息或正确设置其parentView/navigation/tabBarController属性。

UITableViewCell不应该是UIViewController的视图。它可能有一些控制器对象负责管理它的行为(虽然我怀疑这种行为可能都包含在单元格视图中)但该控制器不应该继承UIViewController。

答案 1 :(得分:4)

自从发布了其他一些答案以来,这已经发生了变化 - 您想要查看UIViewController的最新文档,特别是the guide section "Presenting View Controllers from Other View Controllers"class reference guide section“实现容器视图控制器”。此外,还有来自WWDC 2012的视频介绍了iTunes上的主题:Session 236 - The Evolution of View Controllers on iOS。 (视频非常有用,它不仅仅是一般概述。)

答案 2 :(得分:0)

你可以将它全部放在一个xib中。例如,只需将其全部放在MainWindow.xib中。

答案 3 :(得分:0)

这可以通过在OtherViewController中向MyViewController添加引用来以编程方式完成。这可能有点乱,并且在某种程度上导致我问你为什么要这样做但是......我相信你知道你在做什么。

警告。因为“其他”将包含对“我的”的引用,您将希望保留我的内部其他。但不要,我再说不要在'我'中保留'其他'这种循环会导致错误。

祝你好运,不要忘了投票

如果你有更多的细节,我可以帮助你找出更好的设计,以便可以避免这种事情:)