如何将一个UIViewController的视图从一个xib文件嵌入到另一个xib文件的视图中?

6

MyViewController.xib的File's Owner类设置为MyViewController(UIViewController的子类),File's Owner视图连接到一个包含一些子视图的UIView

OtherViewController.xib的File's Owner类设置为UIViewController,File's Owner视图连接到一个空的UIView

在Interface Builder中是否有可能将MyViewController的视图嵌入到OtherViewController.xib的视图中?

我尝试在OtherViewController.xib中添加MyViewController的实例,但我无法将其放置在视图内(因为它不是UIView),并且我无法访问与MyViewController在MyViewController.xib中相关联的视图(只有视图控制器本身及其连接到的内容可以在OtherViewController.xib中使用)。

4个回答

7
您可能不想这样做。请遵循“View Controller Programming Guide”中的警告:
注意:如果您想将视图层次结构分成多个子区域并单独管理每个子区域,请使用通用控制器对象(从NSObject继承的自定义对象)来管理每个子区域,而不是使用视图控制器对象。然后使用一个视图控制器对象来管理通用控制器对象。
一个UIViewControler子类的视图未填满窗口时,它的行为将与您预期的不同。 它将不会接收视图控制器生命周期消息、旋转消息或正确设置其parentView/navigation/tabBarController属性。
UITableViewCell不应该是UIViewController的视图。 它可能有一些控制器对象负责管理其行为(尽管我怀疑这种行为可能全部包含在单个单元格视图本身中),但该控制器不应继承自UIViewController。

讲解得很清楚...但是你能提供一些代码示例来展示你在项目中实际是如何做的吗? - jayant rawat

4

0

你可以把所有的东西都放在一个xib文件中。例如,只需将它们全部放在你的MainWindow.xib文件中。


在这种情况下我做不到。更具体地说,OtherViewController.xib的视图是一个UITableViewCell。MyViewController是我想要重复使用于多个单元格的通用GUI小部件,但每个单元格都需要在自己的xib文件中...此外,将所有内容都放入一个xib文件中是不好的,因为建议保持nib文件较小 - jlstrecker

0

这可以通过在OtherViewController中添加对MyViewController的引用来以编程方式完成。 这可能有点混乱,并且在某种程度上让我想知道为什么您要这样做,但是...我会相信您知道自己在做什么。

警告。 因为'Other'将包含对'My'的引用,所以您将希望在Other中保留My。 但是,请不要在'My'内部保留'Other',这种循环会导致错误。

祝你好运,别忘了投票

附言:如果您有更多细节,我可能能够帮助您解决更好的设计,以避免这种情况 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接