将视图控制器从一个故事板移动或复制到另一个故事板

问题描述 投票:67回答:9

我在一个故事板中有几个UIViewControllers。现在我想将一些UIViewControllers移动到另一个故事板。可能吗?

ios xcode uiviewcontroller storyboard
9个回答
132
投票

对的,这是可能的。

  1. 选择要复制的控制器
  2. 按Command + C.
  3. 打开第二个故事板文件
  4. 按Command + V.

注意:“IBOutlets在复制后保持原样(在Xcode 6.3.2上验证)。”


30
投票

可以复制,但您必须在一个项目中一次打开两个故事板,然后复制和粘贴。


28
投票

在Xcode 8中,如果您特别想要将视图控制器移动到另一个故事板,只需选择要通过Cmd移动的视图控制器+单击视图控制器。保持选中状态,转到“编辑器”选项卡,然后选择“重构到故事板”。它将询问您新故事板文件的名称,然后按Enter键。

将使用您选择的视图控制器创建一个新的故事板文件。在Main.storyboard中,您将看到一个Storyboard Reference对象代替该视图控制器,这是您对刚刚制作的新故事板的引用。


3
投票

复制粘贴(Command + C,Command + V)工作正常,但记得解决插座连接,因为Xcode似乎保持原始连接:关闭/重新打开项目,删除错误并重新建立缺少的连接。


2
投票

可以复制/粘贴,但只有在两个故事板并排使用Xcode的助理编辑器打开时它才有效。


0
投票

可以通过复制/粘贴在Xib和Storyboard文件之间移动界面元素。

这本来不适合我。我试图将UICollectionViewCell从专用Xib复制到我们的主故事板。单元格不会复制到Storyboard中。

解决方案是在故事板中选择特定的父元素。 UICollectionViewCell可以作为故事板中UICollectionView的子级粘贴,但不能粘贴。

如果您在粘贴特定项目时遇到问题,请务必在尝试粘贴之前仔细检查您是否选择了有效的父元素。


0
投票

如果使用Cut-n-Paste失败,则有一种解决方法。如果正在粘贴的文件中存在ViewController,则粘贴将失败。这使得无法选择要粘贴的故事板。 XCode将拒绝粘贴。因此,您需要先将空视图控制器拖入库中的故事板。然后在故事板中选择此viewController,然后粘贴将起作用。粘贴完成后,可以删除虚拟viewController。你不会再需要它了。


0
投票

我遇到了类似的情况,在我的主故事板中,我有太多的场景,需要重构。我在开始时的想法是标记几个并按照许多人的建议复制粘贴。但是,我担心任何与视图控制器代码的故事板连接的解决方案。经过多次搜索,我发现自iOS 9以来,“Refactor to Storuboard”有了一个新功能。您可以在源故事板中标记多个场景,然后可以从“编辑器”菜单中选择该选项。然后,从旧故事板中提取所有选定的场景,创建新的故事板以及旧/主故事板中的链接。有用的totorial是:https://code.tutsplus.com/tutorials/ios-9-staying-organized-with-storyboard-references--cms-24226 https://www.raywenderlich.com/115697/ios-9-storyboards-tutorial-whats-new-in-storyboards

我希望这个新的官方故事板重构功能可以为这类问题提供更好的解决方案。


-1
投票

我认为这有可能......

UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"secondStoryBoard" bundle:nil];

UIViewController *theTabBar = [secondStoryBoard instantiateViewControllerWithIdentifier:@"myTabBar"];

[self.navigationController pushViewController:theTabBar animated:YES];
© www.soinside.com 2019 - 2024. All rights reserved.