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

时间:2014-10-24 11:56:12

标签: ios xcode cocoa-touch storyboard xcode6

此警告发生在Xcode 6.1中。任何人都有想法这个警告意味着什么,它会发生什么?非常感谢!

以下是在源代码"

中打开警告的屏幕截图

enter image description here

如何找到导致警告的约束? Xcode没有告诉你哪个约束是问题。

enter image description here

13 个答案:

答案 0 :(得分:422)

此警告可能很烦人,从Xcode 6.1.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

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

search

是的,你猜对了。点击它。

第5步:天啊!享受几分钟的生产力,直到Apple修复这个烦人的bug。

wheeee


2016年......

  • 如果您无法通过“显示日志”获取,请显示报告导航器。 (这是最左边一列中最右边的选项卡。)深入研究构建结果。这将显示构建日志,包括约束ID。礼貌buildsucceeded

enter image description here

enter image description here

  • 请注意,对于5/2016的Xcode,在某些情况下,您必须退出并重新启动 Xcode以清除此警告。

  • 请注意,令人困惑的是,相同的错误可能是由无关的问题引起的(这似乎是Apple错误或错误语言的使用不当):如果您有IBInspectable项,并且碰巧<在Swift文件中强>重命名。 Xcode 为您删除旧名称UserDefinedRuntimeAttributes。只需单击“身份检查器”(右侧面板上的第3项)并删除无效项目。

2017年......

  • 问题的另一个常见且更简单的原因。如果您碰巧取消安装项目:截至撰写时,非常简单的Xcode 无法自动卸载导致该项目的任何约束。很简单,查看任何未安装的项目,并针对其所有约束,只需将它们标记为未安装。 (或者简单地说,也许只是暂时删除未安装的项目,看看是否存在问题。)

答案 1 :(得分:39)

当您在故事板中取消激活视图但未根据该视图停用约束时,将触发此消息。

例如,您停用了一个按钮,但仍然有一些与该按钮相关联的约束。它可能是一个固有的约束,如高度或宽度,或相对约束,如距另一个视图的距离。

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

答案 2 :(得分:15)

此解决方案适合我。

因为我将我在Xcode 5中开发的项目中的几个项目复制到Xcode 6中,而Xcode 6中的故事板支持多个布局,对于每个约束,我需要在当前配置中安装它。

例如,我正在使用“Compact Width | Regular Height”,我需要设置如下约束:

enter image description here

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

答案 3 :(得分:8)

只是想添加我的案例这个错误是如何发生在我身上的:在我的情况下,我想删除带有“Cmd + Backspace”的Textfield。我直接在Scene-Builder Tree-View中完成了这个:

enter image description here

您可以看到暂停字段显示为灰色。

这对我来说很容易被发现。你可以简单地删除 通过选择字段:

从菜单中编辑 - 删除

令人惊讶的是 - 这确实删除了字段(包括约束)。 也许这有助于某人轻松找到这个令人讨厌的警告的原因......

答案 4 :(得分:6)

扩展说明

其他答案没有错。我只是想提请注意原始警告中的措辞,并确定一些用例,这些用例可以显示在一个工作流程中。< / p>

constraint-warning

  

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

意味着在一个或多个约束中引用的某个项目(通常是通常可见的控件或自定义视图)已关闭(已禁用或已选中&#34;已安装&#34;未选中)。例如,如果您决定要在主视图之外的故事板中移动控件或视图(或者有时在大小类中执行某些有趣的操作时),那么如果控件附加了约束,您可能会看到此警告。

uninstalled-control

与推荐的解决方案一起:

  

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

两种修复方法

文件大纲

在视觉上,您可以在故事板中打开文档大纲,并查找引用位于主视图外部的控件/视图的灰色约束(加宽轮廓,单击约束,查看属性检查器,鼠标按下到快速回顾)。然后从此上下文中删除约束(大小类)。例如,在我的情况下,我只是持有控件,直到我稍后决定在哪里呈现它,所以我选择完全删除有问题的约束,直到稍后。但是在大小类中,我只需使用属性检查器中的已安装复选框从当前上下文中卸载约束。

日志导航器/查找工具

还可以继续使用Log Navigator通过为故事板上的每个对象提供的唯一标识符来查找问题控件。在日志中,它将在黄色突出显示的文本之前,并且通常采用上面示例中所示的形式:jvj-mY-DHf

使用标识符,然后可以使用Xcode中的查找工具来定位和删除(完全)或卸载(对于当前上下文)有问题的约束。

log-navigator

如果您喜欢Xml及其简单性,您还可以打开Storyboard作为源代码,找到有问题的唯一标识符并删除相应的xml块。

答案 5 :(得分:1)

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

答案 6 :(得分:1)

对我来说,如果我将一个对象设置为对象(而不是视图)的新约束,并且未选中“约束到边距”选项,则会发生这种情况。勾选选项(默认情况下)解决了问题。

答案 7 :(得分:1)

对我有用(我不知道为什么)是关闭“使用特征变化”,然后执行清理,然后重新打开它们。下一个版本没有警告。

要关闭“使用特征变体”,只需在Project Navigator中选择故事板,然后选择文件检查器。

enter image description here

然后取消选择“使用特征变化”,按Shift-CMD K执行清洁,然后如果要使用它们,则重新打开特征变体。

enter image description here

答案 8 :(得分:0)

由于另一个答案,我认为这是一个持久的限制因素,但这是由于一个出口&#39;我还有一个我之前删除的项目。该怎么做:

  1. 选择您的ViewController
  2. 点击&#39;出口&#39;右上角的图标
  3. 浏览您的商店并仔细删除任何您不需要的商品
  4. 最糟糕的情况是,您删除了所有商店,然后重新连接它们。案件解决了!

答案 9 :(得分:0)

正如在@BadCat's answer中所提及的那样, 我沿着台阶走下去,又敢走了一步!

在BadCats的最后一步回答后执行的步骤:

第1步:

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

第2步

构建XCode项目,它会显示警告的数量可能会增加。那是因为你删除了一个需要编译好的约束。那么,转到第3步!

第3步

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

对我而言,警告只是通过这样做而消失了! 我想这会对一些人有用!

<强>原因:

我可以理解导致此警告的问题是,我有一个标签连接到IBOutlet,但它的名字以大写字母开头。所以我在ViewController中用一个简单的字母重命名它,然后在IB中更改它。我删除了过去的IBOutlet并将其连接到新重命名的属性名称并连接。然后我注意到有一个新的警告出现了。

首先我在这个帖子中尝试了以下answer,但它没有帮助!

干杯!

答案 10 :(得分:0)

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

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

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

删除旧堆栈视图解决了问题。