【问题标题】:getting merge conflicts with inferredMetricsTieBreakers in Storyboard file在 Storyboard 文件中与 inferredMetricsTieBreakers 发生合并冲突
【发布时间】:2012-10-08 14:09:39
【问题描述】:

每当我在故事板文件中遇到冲突时,我通常都能解决它。但是,我有一个问题在两周内出现了两次。

在我的 Storyboard 文件的最底部,我看到名为“inferredMetricsTieBreakers”的块,其中包含一堆“segue”标签。似乎我的本地仓库中的某些 segue 与远程仓库中的另一个 segue 冲突。为了安全起见,我可以“选择两者”。但由于这种情况以前发生过一次,我担心它会继续发生,最终在我的故事板文件的末尾有一个长长的这些 segue 引用列表。

只是想知道是否有人对文件中的这些标签非常了解,或者我是否应该盲目地继续“选择两者”并忽略该问题。

谢谢, -丹。

【问题讨论】:

    标签: xcode interface-builder


    【解决方案1】:

    情节提要中的每个视图控制器都有“模拟指标”,您可以在属性检查器中看到它:

    其中一些指标是推断的(因此,推断指标)。

    正如@thesystem 所提到的,如果给定的视图控制器是多个转场的目的地,则转场的源视图控制器的模拟指标之间可能存在差异。为了解决这些差异,IB 在解析目标视图控制器的推断指标时选择了一个 segue 来打破平局。

    @rick-pastoor 的结论是安全删除整个inferredMetricsTieBreakers 部分是正确的,因为 IB 可以选择不同的打破平局的 segues。但是,不能保证新的 tie-breakers 会在 IB 中产生相同的布局结果。*

    例如,我遇到过这样一种情况,根据决胜局的转场,在 IB 中显示的视图控制器可能带有或不带有状态栏。在这两种情况下,它的视图都保持了 568pts 的高度,因此顶部布局指南的位置不断变化。这会滚雪球般地导致对受限于顶部布局指南的视图框架进行其他不希望的(并且在很大程度上无意义的)更改。

    根据这些观察结果,不建议同时选择新旧推断指标集。相反,删除这两个集合,然后在 IB 中打开故事板,以便在提交合并之前打破联系。为了避免由于打破平局的变化而导致不希望的帧更改,请为目标视图控制器的相关模拟指标选择“推断”以外的一些值。这将确保 IB 生成一致的布局结果。

    * 运行时的结果应该是相同的,除非在视图取消归档后立即有任何依赖于初始布局的逻辑。

    【讨论】:

      【解决方案2】:

      这里发生了同样的事情。使用“同时选择”方法后,我的故事板文件中出现错误。发现在情节提要中搜索 segue 引用会导致 inferredMetricsTieBreakers 部分中提到的一个 segue。从列表中删除 segue 解决了我的破坏性构建。

      为了尝试找出 inferredMetricsTieBreakers 的作用,我尝试先删除整个部分。打破我的构建。接下来我删除了所有项目。在构建期间,Xcode 在我的列表中添加了 2 个新的和不同的 segue(在合并之前我有 3 个)。我正在构建的应用程序运行良好。

      我的结论:删除所有项目并执行干净的构建是安全的。这将使您的故事板保持干净。

      【讨论】:

      • 有人知道inferredMetricsTieBreakers 的作用是什么吗?只是删除并继续前进似乎有点可怕
      • @race_carr 它与故事板转场有关。如果有疑问,请保留 HEAD 并重新添加新的转场。
      【解决方案3】:

      看起来,当情节提要中的一个视图控制器通过 segue 从两个或多个其他视图控制器连接并且其模拟指标设置设置为“推断”但 Xcode 不能确保推断意味着完全是一个每种情况下的指标设置(横向或纵向)。

      我通过将所有控制器模拟指标更改为“推断”来修复它,并且所有指标都是从具有固定模拟指标设置“景观”的控制器推断的。之后,我从该部分(但不是该部分本身)中删除了 tie-breaker segue id。

      【讨论】:

        【解决方案4】:

        将指标从 Inferred 更改为 Freeform(Xcode 8、Swift 3)。解决了我的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-23
          • 2016-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多