在 git 下管理故事板的更好方法?

Better way to manage storyboards under git?

我有一个项目,我的开发人员在做,任务被划分为一个人做大部分业务逻辑,两个开发人员做前端,分成任务。

现在我们遇到了两个前端开发人员在他们的故事板上发生冲突的问题。大多数问题发生在一个开发人员修复问题并决定在所有地方修复它,从而进入另一个的视图控制器时。此外,情节提要通常会导致帧的更新只是一点点更新,而视图突然错位。

我们有代码审查,因此前端开发人员会互相检查代码,因此这会产生另一个问题,即拉取请求与合并到主控之间的延迟。因此,他正在处理的事情不能立即再次用于新任务(因为新任务 = 新分支)。

是否有更好的方法来处理情节提要和 git?

您应该查看 Storyboard 参考 - 这将减少您遇到的冲突。

但是你不能让 2 个人在不发生冲突的情况下处理同一个故事板(有时你可能会侥幸逃脱)

iOS 8+兼容性

https://developer.apple.com/videos/wwdc/2015/?id=215


http://useyourloaf.com/blog/refactoring-with-storyboard-references.html

总是可以将一个大的用户界面拆分成几个 Storyboard。缺点是您无法在 Interface Builder 中在不同的 Storyboard 之间创建 segue。相反,您需要在呈现视图控制器的 Storyboard 中连接 target-action 连接,并使用 instantiateViewControllerWithIdentifier: 让目标视图控制器呈现。

Xcode7 中引入的故事板参考为您提供了一种拆分大型故事板的方法,并且仍然在 Interface Builder 中创建场景之间的转场。

重构大型故事板

要展示如何使用 Storyboard 引用,请考虑使用标签栏控制器的简单 iPhone 应用程序的以下 Storyboard。

第一个“新闻”选项卡包含一个拆分视图控制器,带有通常的 table 基于视图的 master-detail segues。第二个“设置”选项卡有一个静态 table 视图,可以连接到其他三个视图控制器。

我还有一个 iPad 版本的情节提要,其中设置视图通过工具栏上的按钮显示在弹出窗口中。我们可以通过首先将它们重构到一个单独的故事板文件中来避免在 iPad 故事板中重复这些场景:

  • Select 要重构的场景 - 在本例中是根导航控制器、设置 table 视图控制器和三个 child 视图控制器。

  • 从“编辑器”菜单select重构到情节提要,出现提示时输入新情节提要的名称(我使用设置)并保存。

  • Interface Builder 将切换为向您显示新创建的 Storyboard,其中应包含之前 selected 的设置场景和 segues。

  • 如果切换回主情节提要,您会看到设置场景已替换为表示情节提要参考的占位符:

不幸的是,设置的标签栏项目失去了它的标题和图标。我不确定这是错误还是功能(随后会出现雷达)。现在我手动将它们添加回主情节提要中。

添加对故事板的引用

要使用新的设置情节提要,请将情节提要参考从 object 库拖到 iPad 情节提要中:

使用属性检查器在设置故事板中设置导航控制器的故事板名称和标识符:

一旦你有了 Storyboard 引用,你就可以将它用作 segue 的目标。因此,例如,我可以创建一个从条形按钮项目到设置情节提要参考的弹出窗口转场:

改进空间

这种情节提要引用方法的缺点是您无法再在单个屏幕上查看整个用户界面。我希望 Interface Builder 在查看主 Storyboard 时会自动解析引用以显示每个 Storyboard 的内容。也许 Xcode 8?

重构本地化情节提要的另一个不利因素是,您需要记住为新情节提要手动复制本地化字符串。 Xcode 目前无法为您管理。

2015 年 8 月 27 日更新:如果您想保持与 iOS8 的向后兼容性,我还应该提一下,您不能将故事板引用用作关系转场的目标。例如,您不能在选项卡栏控制器中嵌入故事板引用,也不能将其作为导航控制器的根 iOS 8.