将视图控制器从一个情节提要板移动或复制到另一个情节提要


Answers:


150

是的,有可能。

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

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


1
太好了 当我在Finder中手动复制我的Storyboard,将其从Apple示例项目复制到我自己的项目时,我一直遇到问题。当我在目标项目中创建情节提要,然后将内容复制并粘贴到其中时,问题消失了。
维尔恩·詹森

1
它是工作解决方案@Fady Kamal。有时它从一开始就不起作用-它取决于X-Code的重点。
new2ios 2015年

2
好的,@ Rahul,但是插座会发生什么-它们的设置是否正确,或者我必须重新链接它们?
new2ios 2015年

1
您也可以尝试重复。Command + D或Edit-Duplicate可以起到神奇的作用!
AG

1
确认仍在Xcode 8.3.2中工作。IBOutlet,IBAction,情节提要ID都可以完美复制。但是,我没有中断任何Segue,这意味着我没有在Segue的末尾删除视图控制器并将其放入另一个故事板。我确实复制了segues,但是仅在复制了原始视图控制器和目标视图控制器并将它们一起移动到新的故事板上的位置
MikeG

36

可以复制,但是您必须在一个项目中一次打开两个情节提要,然后复制并粘贴。


9
这实际上是解决我的问题的方法。两个故事板都必须使用助手编辑器打开!谢谢!
陈李勇

34

在Xcode 8中,如果专门要将视图控制器移动到另一个情节提要,只需选择要按Cmd移动的视图控制器,然后单击视图控制器即可。保持选中状态,转到“编辑器”选项卡,然后选择“重构为情节提要”。它将询问您新故事板文件的名称,然后按Enter。

将创建一个新的情节提要文件,其中包含您选择的视图控制器。在Main.storyboard中,您将看到一个Storyboard Reference对象代替该视图控制器,这是您对刚创建的新Storyboard的引用。


这非常有帮助。与其他方法不同,它保留了所有现有的关系和顺序。
Hobo Joe

但是您不能重构到现有的故事板吗?
大卫,

6

复制粘贴(Command + C,Command + V)可以正常工作,但请记住解析出口连接,因为Xcode似乎保留了原始连接:关闭/重新打开项目,删除错误的地方并重新建立丢失的连接。



1

如果对您使用“剪切粘贴”失败,则有一种解决方法。如果要粘贴的文件中现在包含ViewController,则粘贴将失败。这使得无法选择故事板进行粘贴。XCode将拒绝粘贴。因此,您需要首先将一个空的视图控制器从库中拖到情节提要中。然后在情节提要中选择此viewController,然后粘贴将起作用。粘贴完成后,您可以删除虚拟viewController。您将不再需要它。


0

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

这本来不是为我工作的。我试图将UICollectionViewCell从专用Xib复制到我们的主Storyboard。该单元将不会复制到情节提要中。

解决方案是在情节提要中选择特定的父元素。可以将UICollectionViewCell作为UICollectionView的子级粘贴到情节提要中,否则不能粘贴。

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


0

我遇到了类似的情况,在我的主故事板上,场景太多,需要重构。我一开始的想法是标记多个并按照许多人的建议进行复制粘贴。但是,我担心情节提要图板与视图控制器代码的连接是否解析。经过大量搜索,我发现自iOS 9以来,“重构到Storuboard”有一个新功能。您可以在源情节提要中标记几个场景,然后可以从“编辑器”菜单中选择该选项。然后,从您的旧情节提要中提取所有选定的场景,创建一个新的情节提要以及指向旧/主情节提要中的链接。有用的教程是: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

我希望这个新的官方情节提要重构功能可以为此类问题提供更好的解决方案。


-2

我认为有可能...

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

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

[self.navigationController pushViewController:theTabBar animated:YES];

我的意思是在Xcode的
演示图

问题是要在Storyboard中移动/复制VC。我不认为您在任何解决此问题的答案。
Alix 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.