47

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

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

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

谢谢,-丹。

4

4 回答 4

62

故事板中的每个视图控制器都有“模拟指标”,您可以在属性检查器中看到:

在此处输入图像描述

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

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

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

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

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

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

于 2014-07-28T20:38:28.193 回答
40

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

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

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

于 2012-10-31T16:40:52.670 回答
2

看起来,当情节提要中的一个视图控制器通过 segue 从两个或多个其他视图控制器连接并且其模拟指标设置设置为“推断”但 Xcode 无法确保推断意味着恰好一个指标设置(风景或肖像)在任何情况下。

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

于 2014-07-11T09:26:38.977 回答
0

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

于 2016-12-01T22:47:02.243 回答