Xcode故事板警告:在当前configuration中closures约束引用项目。 closures当前configuration中的这个约束

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

以下是源代码中打开的警告的屏幕截图“

在这里输入图像说明

如何find哪个约束导致警告? Xcode不会告诉你哪个约束是问题。

在这里输入图像说明

这个警告可能会令人讨厌,并发生在Xcode 6.1.1。 主要的问题是你不能通过点击警告轻松find引用的约束。 我想这是一个错误,迟早会得到修复。

但是,在此期间,您可以使用这个小小的解决方法:

第1步:检测恼人的警告😱

恼人的警告

步骤2:右键/ Ctrl键 – 点击警告,selectReveal in Log Re中Reveal in Log

在这里输入图像说明

第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 ... 

嗯……这是什么?

有趣

第4步:让我们把它扔到项目search栏中…😐

搜索

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

第五步:😁OMG! 享受几分钟的生产力,直到苹果修复这个烦人的错误。 😎

wheeee


2016年…

  • 如果您无法通过“在日志中显示”获取,请显示报告导航器。 (这是最左边一列的最右边的标签。)在那里查看构build结果。 这将显示构build日志,包括约束ID。 礼貌打造成功

在这里输入图像说明

在这里输入图像说明

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

  • 注意,令人困惑的是,相同的错误可能是由一个无关的问题引起的(这似乎是一个苹果错误或错误的语言使用IBInspectable ):如果您有IBInspectable项目,并且恰好在您的Swift文件中重命名它们。 Xcode不会为您删除旧的UserDefinedRuntimeAttributes。 只需点击“Identity Inspector”(右侧面板上的项目3),然后删除哑件。

2017年…

  • 这个问题的另一个常见而且更简单的原因。 如果你碰巧解除 安装一个项目:在编写的时候,Xcode 不知道自动卸载任何导致该项目的约束 。 很简单,看看任何未安装的项目,并为其所有约束,只需标记他们未安装。 (或者干脆,也许只是暂时删除未安装的项目,看看是否是这个问题。)

当您已经停用故事板中的视图时,将触发此消息,但不会基于该视图停用约束。

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

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

这个解决scheme适用于我。

因为我将从Xcode 5开发的项目中的多个项目复制到Xcode 6中,而Xcode 6中的Storyboard支持多个布局,对于每个约束,我需要将其安装在当前configuration中。

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

在这里输入图像说明

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

只是想添加我的情况如何发生这个错误对我来说:在我的情况下,我想删除一个文本字段“Cmd + Backspace”。 我直接在Scene-Builder树视图中做了这个:

在这里输入图像说明

你可以看到打盹字段是灰色的。

所以很容易发现我。 你可以比简单的真正删除字段select:

编辑 – 从菜单中删除

令人惊讶的是 – 这确实删除了领域(包括约束)。 也许这可以帮助别人轻松find这个令人讨厌的警告的原因…

扩展解释

其他答案没有错。 我只是想提请注意原始警告中措词 ,并确定一些可以在工作stream程中显示的用例。

约束的警告

在当前configuration中closures约束引用项目。

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

卸载控制

随着推荐的解决scheme:

closures当前configuration中的这个约束。

两个方法来解决

文档大纲

在视觉上,您可以打开故事板中的文档大纲,并查找灰色的约束,这些约束引用坐在主视图之外的控件/视图(扩大轮廓,单击约束并查看属性检查器,鼠标向下快速查看) 。 然后从这个上下文(大小类)中删除约束。 例如,在我的情况下,我只是持有控制权,直到我稍后决定将其呈现在哪里,所以我select完全删除违规约束,直到后来。 但是在一个size类中,我只是使用属性检查器中已安装的checkbox从当前上下文中卸载约束。

日志导航器/查找工具

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

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

登录导航

如果你喜欢Xml和简单,你也可以打开故事板作为源代码,并find有问题的唯一标识符,并删除适当的XML块。

这可能发生的原因之一,是因为你select了一个大小类不符合你的限制( wAny hAny都是常见的情况下)。 在这种情况下,只需在Interface Builder中select不同的大小类,就完成了。

对我来说,如果我设置一个对象一个新的约束对象(而不是查看)与“约束到边距”选项不打勾。 问题解决与选项(这是默认)。

我认为这是一个持续的约束,由于另一个答案,但是这是由于我还有一个“出路”,我曾经删除过的项目。 要做什么是:

  1. select你的ViewController
  2. 点击右上angular的“出口”图标
  3. 通过你的网点,仔细删除你不需要的东西

最糟糕的情况下,你删除所有的网点,只是再次挂钩。 案件解决了!

正如前面提到的,在@ BadCat的回答中得到了很好的指导,我遵循了这些步骤,并且只敢再走一步!

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

步骤1:

我在界面生成器中select了约束,然后记住它是什么,然后删除它。

第2步

build立XCode项目,它会显示你可能会增加警告的数量。 那是因为你已经删除了需要编译的约束。 所以,去第三步!

第3步

重新添加你记住的约束(你删除的那个)。 然后再重新构build它!

对我来说,警告只是这样做而已! 我猜这对一些人来说是有效的!

原因:

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

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

干杯!

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

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

对我来说什么(我不知道为什么)是closures“使用特征变化”,然后执行一个干净的,然后把它们重新打开。 下一个版本没有警告。

要closures“使用特征变化”,只需在Project Navigator中select你的故事板,然后selectFile Inspector。

在这里输入图像说明

然后,只需取消select“使用特征变化”,按Shift-CMD K执行清理,然后再打开特征变体,如果你想使用它们。

在这里输入图像说明

我有堆栈视图的问题。 删除约束并重新添加它们并没有帮助。 清洁和重build没有帮助。

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

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

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