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

时间:2015-10-30 08:45:56

标签: ios git storyboard

我有一个我的开发人员正在处理的项目,并且任务是分开的,以便一个人完成大部分业务逻辑,两个开发人员做前端,分为任务。

现在我们遇到的问题是两个前端开发人员的故事板上存在冲突。大多数问题发生在一个开发人员修复问题时,并决定在任何地方修复它,从而进入另一个视图控制器。此外,故事板通常会导致框架的更新只是稍微更新,而且视图突然被放错了位置。

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

有没有更好的方法来处理故事板和git?

1 个答案:

答案 0 :(得分:8)

您应该查看故事板引用 - 这将减少您将遇到的冲突。

但你不能让2个人在同一个故事板上工作而不会发生冲突(有时你可能会侥幸逃脱)

iOS 8+兼容性

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

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

始终可以将大型用户界面拆分为多个故事板。缺点是您无法在Interface Builder中的Interface Builder之间创建segues。相反,您需要在呈现视图控制器的Storyboard中连接目标操作连接,并使用instantiateViewControllerWithIdentifier:来显示目标视图控制器。

Xcode 7引入的故事板引用为您提供了一种分割大型故事板的方法,并且仍然可以在Interface Builder中创建场景之间的分段。

重构大型故事板

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

large_storyboard

第一个“新闻”标签包含一个拆分视图控制器,其中包含通常基于表格视图的主要细节段。第二个“设置”选项卡有一个静态表视图,其中有三个其他视图控制器。

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

  • 选择要重构的场景 - 在这种情况下是根导航控制器,设置表视图控制器和三个子视图控制器。

  • 从编辑器菜单中选择重构到故事板,然后在提示时输入新故事板的名称(我使用设置)并保存。

  • Interface Builder将切换为显示新创建的故事板,其中应包含先前选择的设置场景和segues。

  • 如果您切换回主故事板,您将看到设置场景已被替换为代表故事板参考的占位符:

storyboard_reference

很遗憾,“设置”的标签栏项目已丢失其标题和图标。我不确定这是一个错误还是一个功能(雷达会跟随)。现在我手动将它们添加回主故事板中。

添加对故事板的引用

要使用新的设置故事板,请将Storyboard参考从对象库拖到iPad故事板中:

reference

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

reference

获得故事板参考后,您可以将其用作segue的目标。例如,我可以创建一个从条形按钮项到设置故事板参考的弹出窗口:

reference

改善空间

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

如果您重构本地化的故事板,另一个消极因素是您需要记住手动复制新故事板的本地化字符串。 Xcode目前不会为您管理。

2015年8月27日更新:我还要提一下,如果您想要保持与iOS 8的向后兼容性,则不能使用故事板引用作为关系segue的目标。例如,您不能在标签栏控制器中嵌入故事板引用,也不能将其作为iOS 8上导航控制器的根目录。

相关问题