Xcode Storyboard 警告: 约束引用项在当前配置中关闭。在当前配置中关闭此约束

这个警告发生在 Xcode 6.1。有人知道这个警告是什么意思吗?非常感谢!

下面是用源代码打开的警告截图

enter image description here

如何找到导致警告的约束? Xcode 没有告诉您问题出在哪个约束上。

enter image description here

30178 次浏览

当您在故事板中关闭了一个视图,但是没有关闭基于该视图的约束时,将触发此消息。

例如,您停用了一个按钮,但仍然有一些约束链接到该按钮。它可能是一个内在的约束,如高度或宽度,或相对约束,如从另一个视图的距离。

您必须关闭引用视图的每个约束,并且必须手动执行。Xcode 在这里过于保守,不会为您做到这一点。

我认为这是一个持续的约束,由于其他的答案,但它是由于一个’出口’我仍然有一个项目,我删除之前。应该做的是:

  1. 选择 ViewController
  2. 点击右上角的“插座”图标
  3. 仔细检查你的插座,并小心地删除任何你不需要的东西

最坏的情况下,你删除所有的插座,只是重新连接它们。案件解决了!

这个方法对我很有效。

因为我将在 Xcode 5中开发的项目中的几个项目复制到了 Xcode 6中,并且 Xcode 6中的情节串连板支持多种布局,对于每个约束,我需要在当前配置中安装它。

例如,我使用“压缩宽度 | 规则高度”,我需要设置的约束如下:

enter image description here

在我检查并设置了项目中的数百个约束(清理和构建)之后,警告最终消失了。

这个警告可能很烦人,而且是从 Xcode 6.1.1开始发生的。主要问题是,您无法通过单击警告轻松找到引用的约束。我想这是一个错误,迟早会得到修复。

然而,与此同时,您可以使用这个小小的变通方法:

第一步: 检测恼人的警告

Annoying warning

步骤2: 右键/Ctrl-单击警告,选择 Reveal in Log

enter image description here

步骤3: 欣赏下面日志片段的美丽之处:

... snip ...
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Dlb-cb-nWC: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:6Ze-mO-v5N: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:9av-xw-u1o: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:RPt-Uf-vaZ: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Rnc-4M-7jV: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:epJ-D9-KEF: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:4HC-Gu-01w: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
... snip ...

这是什么?

interesting

第四步: 让我们把它扔进项目搜索栏..。

search

没错,你猜对了,点一下。

第五步: 天哪! 享受额外的几分钟的生产力,直到苹果修复这个恼人的错误。

wheeee


2016年。

  • 如果不能通过“在日志中显示”获得,请显示报表导航器。(这是最左边列中最右边的选项卡。)深入研究那里的构建结果。它将显示生成日志,包括约束 ID。感谢 建造成功了

enter image description here

enter image description here

  • 注意,对于5/2016的 Xcode,令人恼火的是,在某些情况下,您必须退出并使用 重新开始 Xcode 来清除此警告。

  • 请注意,令人困惑的是,同样的错误可能是由一个不相关的问题引起的(这似乎是一个苹果错误或错误语言使用不当) : 如果您有 IBInspectable项,并发生在您的 Swift 文件中的 重命名项。Xcode 会为您删除旧名称的 UserDefinition edRuntimeAttributes没有。只需点击“身份检查员”(项目3右面板) ,并删除无效项目。

2017年。

  • 另一个常见的,实际上更简单的问题原因。如果你碰巧 取消安装一个项目: 在写作时,非常简单的 Xcode 不知道自动也卸载导致该项的任何约束。非常简单,查看任何未安装的项目,对于它的所有约束,只需将它们标记为未安装。(或者简单地说,也许只是暂时删除未安装的项目完全,看看这是否是问题所在。)

发生这种情况的原因之一是因为您选择了一个与约束不兼容的 size 类(wAny hAny是一种常见的情况)。在这种情况下,只需在 Interface Builder 中选择一个不同大小的类就可以了。

对我来说,如果我设置一个对象一个新的约束对象(而不是视图)“约束到边距”选项没有勾选。通过勾选选项(默认选项)解决了问题。

详细解释

其他答案都没问题。我只是想提请注意 最初的警告中的 措辞,并确定一些可以在工作流中显示的用例。

constraint-warning

约束引用项在当前配置中关闭。

意味着在一个或多个约束中引用的某些项(通常是通常可见的控件或自定义视图)被关闭(禁用或未选中复选框“安装”)。例如,如果你决定将一个控件或视图移到主视图之外(或者你可能在大小类中做一些有趣的事情时看到) ,那么如果控件附加了约束,你可能会看到这个警告。

uninstalled-control

以及推荐的解决方案:

在当前配置中关闭此约束。

解决问题的两种方法

文件大纲

视觉上,你可以打开故事板中的文档大纲,寻找灰色的约束条件,这些约束条件引用主视图之外的控件/视图(扩大大纲,单击约束条件,查看属性检查器,鼠标下移快速查看)。然后从此上下文(size 类)中删除约束。例如,在我的示例中,我只是保留该控件,直到以后决定在何处显示它,所以我选择完全删除该违规约束,直到以后。但是在 size 类中,我只需使用属性检查器中已安装的复选框从当前上下文中卸载约束。

日志导航器/查找工具

你也可以继续使用日志导航器,通过给故事板上每个对象的唯一标识符来找到问题控制。在日志中,它将位于黄色突出显示的文本之前,通常采用上面示例中的形式: jvj-mY-DHf

使用该标识符,人们可以使用 Xcode 的 find 工具(完全)定位和删除或卸载(对于当前上下文)违规约束。

log-navigator

如果你喜欢 XML 和它的简单性,你也可以打开“故事板”作为源代码,找到不合适的唯一标识符,然后删除相应的 Xml 代码块。

如上所述,在 @ BadCat 的回答中得到了很好的指导, 我沿着台阶往下走,只差一步我就敢走了!

追随 BadCats 最后一步的步骤回答:

第一步:

我在 Interface Builder 中选择了约束,然后记住它的用途,然后删除了它。

第二步

构建 XCodeProject 时,它会显示警告的数量可能会增加。这是因为您已经删除了需要编译好的约束。所以,走到第三步!

第三步

重新添加您记住的约束(您删除的约束)。 然后再重建一次!

对我来说,只要这样做,警告就消失了! 我想这对某些人来说是有用的!

原因:

因为我能够理解导致这个警告的问题是,我有一个连接到 IBOutlet 的 Label,但是它的名字以大写字母开头。所以我在 ViewController 中用一个简单的字母重命名了它,并在 IB 中对它进行了更改。我删除过去的 IBOutlet,并去连接到新重命名的属性名称和连接。然后我注意到有一个新的警告出现了。

首先,我在这个线程中也尝试了下面的 回答,但它没有帮助!

干杯!

我的情况是选择标签,然后点击控制 + X,它将被禁用,但我不做任何事情与它。当我构建时,它会显示警告。 解决方案: 删除标签或删除选定的控件 + X 为标签。

只是想添加我的情况如何这个错误发生在我身上: 在我的情况下,我想删除一个文本字段与“ Cmd + 退格”。我直接在场景构建树视图中做到了这一点:

enter image description here

你可以看到,打盹的领域是灰色的。

这对我来说很容易发现,你可以简单地删除 选择:

编辑-从菜单中删除

令人惊讶的是,这真的删除了字段(包括约束)。 也许这可以帮助某人轻松地找到这个恼人的警告的原因..。

我删除所有这些 UI 元素,包括它们的约束,然后再次添加它们,这些警告就会消失。无论如何,这是一个最糟糕但有用的方法来解决这个问题。

对我有效的方法(我不知道为什么)是关闭“使用特质变化”,然后执行一个清洁,然后再打开它们。下一个版本没有任何警告。

要关闭“使用特征变化”,只需在项目导航器中选择你的故事板,然后选择文件检视器。

enter image description here

然后取消选择“使用特质变化”,通过按 Shift-CMD K 来执行清洁,然后如果你想使用它们,就打开特质变化。

enter image description here

我在堆栈视图中遇到了问题。删除约束并重新添加它们没有帮助。清洁和重建并没有起到帮助作用。

对我来说,解决方案是创建一个全新的堆栈视图对象。

然后将旧堆栈视图中的所有元素移动到新堆栈视图中。

删除旧的堆栈视图修复了这个问题。

对我来说,问题在于“ wR”视图类的“安装”约束,现在需要为所有视图类“安装”:

enter image description here

选中常规的“ Installated”复选框并取消选中“ Installated”复选框中的“ wR”,约束就可以正常工作了:

enter image description here

但是警告仍然没有明确。事实证明,你必须完全删除“ wR”选项,只需点击左边的“ X”,警告就会消失:

enter image description here