80

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

4

10 回答 10

158

对的,这是可能的。

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

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

于 2012-11-16T13:21:18.873 回答
39

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

于 2015-04-08T09:49:43.230 回答
37

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

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

于 2017-01-20T06:09:30.210 回答
6

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

于 2015-10-31T19:01:29.290 回答
3

可以复制/粘贴,但仅当您使用 Xcode 的助手编辑器并排打开两个 Storyboard 时才有效。

于 2016-11-09T13:41:10.560 回答
1

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

于 2016-12-26T00:35:50.123 回答
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

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

于 2018-04-12T10:39:31.557 回答
0

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

这最初不适合我。我试图将 UICollectionViewCell 从专用 Xib 复制到我们的 Main Storyboard。该单元格不会复制到情节提要中。

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

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

于 2016-01-22T21:01:53.913 回答
0

遇到了类似的情况,我需要与 2 个 StoryBoard 控制器共享一个 ViewController 类。

显然,解决方案很简单:

  1. 在故事板和代码之间拆分屏幕
  2. 从情节提要中选择缺少与类的连接的控件
  3. 在连接检查器中,单击并拖动引用插座内的圆圈到类控制器内的代码
  4. XCode 将自动突出显示即将为其创建连接的@IBOutlet
  5. 只要您松开鼠标,就会在 IB 上的该控件和 Class 中的控件之间创建一个连接

希望这足够清楚和有帮助

于 2021-04-27T03:27:52.830 回答
-2

我认为这是可能的......

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

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

[self.navigationController pushViewController:theTabBar animated:YES];
于 2012-11-16T13:20:05.727 回答