Lir*_*rik 11 iphone xcode objective-c ios uistoryboard
我有一个"容器"viewController,它使用storyboard保存一些容器视图.每个容器视图都有一个指向嵌入式viewcontroller视图的链接.
由于我正在开展一个大项目,事实证明,故事板文件非常庞大,并且包含许多"子"视图控制器视图布局.当一些人需要同时在其上工作时,处理该文件将是一个问题.这对我不利.我想知道是否有一种方法可以加载到每个容器中查看viewcontroller的xib文件,并且仍然使用storyboard.
这意味着,为每个viewcontroller创建.xib文件,而不是将它们保存在storyboard本身中,并将它们链接到storyboard中的容器视图.
谢谢,
Nut*_*tch 15
您可以将视图控制器布局移动到单独的xib中.正如您所说,这是跨故事板共享布局的一种非常方便的方法.
在故事板中设置容器视图时,请确保删除嵌入的ViewController中提供的视图.将ViewController的自定义类设置为您的类名.将xib命名为与类匹配(例如,FooViewController.xib,以便在加载FooViewController.m时找到它.)
如果不删除故事板视图控制器布局中的视图,则会看到该视图.您viewDidLoad的视图控制器中的方法将不会被调用,因为View是默认的Storyboard View.
我在iOS 7之前的项目中使用Xcode 6.1 for iOS 8.
是的你可以.一些观察:
您需要做的就是输入我们在使用NIB时常用的代码.在容器的情况下,这意味着典型的容器方法.如果尚未通过代码进行包含,请参阅" View Controller编程指南"中的" 创建自定义容器视图控制器".换句话说,当您转换到非故事板场景(或添加非故事板子视图控制器)时,只需按照您在基于NIB的环境中常用的代码进行编码.您无法在故事板中表示此基于NIB的场景.但是你只需要像使用NIB一样使用控制器:
SecondViewController *controller = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
Run Code Online (Sandbox Code Playgroud)您显然失去了使用故事板的许多好处(例如,根据父场景中的容器视图调整子场景的大小),但您并没有比在NIB环境中更糟糕.但是,在回答您是否可以"将它们链接到故事板中的容器视图"的问题时,您无法在故事板本身中表示这种关系,而是以编程方式将它们链接起来.
如果您的单独团队在单场景环境中工作,则可以使用此NIB方法.不过,您还应该考虑使用多个故事板,每个逻辑团队一个.在故事板之间转换时,您仍然需要使用代码,就像在此NIB方法中一样,但如果您的某个团队有多个场景要处理,他们可以在项目的各个部分享受故事板优势.当您想要到达下一个故事板中的第一个场景时,您可以:
UIStoryboard *secondaryStoryboard = [UIStoryboard storyboardWithName:@"SecondStoryboard" bundle:nil];
SecondViewController *controller = [secondaryStoryboard instantiateInitialViewController];
Run Code Online (Sandbox Code Playgroud)如果您的孩子需要转换到故事板上的新场景,我发现将我自己的parentStoryboard属性添加到我的子控制器是有用的,如果您需要执行类似操作,那么它可能很有用instantiateViewControllerWithIdentifier.显然,如果你没有转换到新的控制器,你可能不需要这样做,但如果你这样做,拥有一个UIStoryboard属性可能是有用的.
| 归档时间: |
|
| 查看次数: |
7475 次 |
| 最近记录: |