繁体   English   中英

将UIViewController xib加载到情节提要中的ContainerView

[英]Loading a UIViewController xib to ContainerView in storyboard

我有一个“容器” viewController,使用故事板保存了一些容器视图。 每个容器视图都有一个到嵌入式viewcontroller视图的链接。

由于我正在从事大型项目,因此事实证明情节提要文件很大,并且包含许多“子” viecontrollers视图布局。 当需要几个人同时处理该文件时,处理该文件将是一个问题。 那对我不好。 我想知道是否有一种方法可以将viewcontroller的xib文件加载到每个容器视图中,并且仍在使用情节提要。

意思是,为每个视图控制器创建.xib文件,而不是将它们保存在情节提要中,然后将它们链接到情节提要中的容器视图。

谢谢,

可以将视图控制器布局移动到单独的xib中。 如您所说,这是在情节提要之间共享布局的一种非常方便的方法。

在情节提要中设置容器视图时,请确保删除嵌入式ViewController中提供的视图 将ViewController的自定义类设置为您的类名称。 将xib命名为与该类匹配的名称(例如FooViewController.xib,以便在加载FooViewController.m时可以找到它。)

如果不在情节提要视图控制器布局中删除“视图”,则会看到该空视图。 您的视图控制器中的viewDidLoad方法将不会被调用,因为该视图是默认的Storyboard视图。

我正在iOS 7之前的项目上使用Xcode 6.1 for iOS 8。

是的你可以。 一些观察:

  1. 您需要做的就是放入使用NIB时使用的那种代码。 对于容器,这就是典型的容器方法 如果尚未通过代码完成围堵,请参阅《 View Controller编程指南》中的 创建自定义容器View Controller ”。 最重要的是,当您过渡到非故事板场景(或添加非故事板子视图控制器)时,只需像在基于NIB的环境中通常使用的那样对其进行编码即可。 您不能在情节提要中表示基于NIB的场景。 但是您只需像使用NIB一样获得控制器即可:

     SecondViewController *controller = [[SecondViewController alloc] initWithNibName:nil bundle:nil]; 
  2. 显然,您失去了使用故事板的许多好处(例如,根据父场景中的容器视图调整子场景的大小),但是您的状况并不比在NIB环境中糟糕。 但是,在回答有关是否可以“将它们链接到情节提要中的容器视图”的问题时,您不能在情节提要中表示这种关系,而是通过编程方式将它们关联起来。

  3. 如果您的单独团队在单场景环境中工作,则可以使用此NIB方法。 但是,您还应该考虑只有多个情节提要,每个逻辑团队一个。 就像在此NIB方法中一样,在情节提要之间进行转换时,您仍然必须诉诸代码,但是如果您的团队中有一个要处理多个场景,则他们可以在项目的一部分中享受情节提要的好处。 当您想进入下一个情节提要中的第一个场景时,可以:

     UIStoryboard *secondaryStoryboard = [UIStoryboard storyboardWithName:@"SecondStoryboard" bundle:nil]; SecondViewController *controller = [secondaryStoryboard instantiateInitialViewController]; 
  4. 如果你的孩子需要过渡到你的故事板新的场景,我觉得有用我自己添加parentStoryboard属性为我的孩子控制器,它可以再有用的,如果你需要做一些像instantiateViewControllerWithIdentifier 显然,如果您不打算过渡到新的控制器,则可能不需要这样做,但是如果是这样,则拥有UIStoryboard属性可能会很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM