【问题标题】:Swift : how to check which view is causing constraints errorSwift:如何检查哪个视图导致约束错误
【发布时间】:2020-05-27 18:48:41
【问题描述】:

尝试加载 VC 时出现以下错误:

Thread 1: Exception: "Unable to activate constraint with anchors 
<NSLayoutXAxisAnchor:0x280fea300 \"i6.I6FuelSheetTextField:0x1030fe400.centerX\"> and 
<NSLayoutXAxisAnchor:0x280fea440 
\"UILayoutGuide:0x282327800'UIViewSafeAreaLayoutGuide'.centerX\"> because they have no common 
ancestor.  Does the constraint or its anchors reference items in different view hierarchies?  
That's illegal."

如何识别这些地址所指的视图?

【问题讨论】:

  • 如果您无法识别带有错误消息的视图(例如您显示的消息中的FuelSheetTextField),您可能会发现尝试使用exerciseAmbiguityInLayout()会有所帮助

标签: swift xcode uiview autolayout


【解决方案1】:

这是因为您试图约束两个彼此无关的视图。您很幸运能够从错误中获得足够的信息。您正在使用一个组件,它是 I6FuelSheetTextField 的实例,并且您试图约束它的 centerX 属性。所以,我认为错误本身就很容易解释。

注意:当您忘记将视图添加到另一个视图的子视图时,也可能出现这种情况。

【讨论】:

  • 感谢您的回答。我的问题是 viewController 中有很多这些文本字段的实例,我想知道是否可以从内存地址中具体确定是哪一个导致问题
  • 从崩溃中,您可以追溯到源头。您可以找到导致此问题的类和函数名称。您只需要仔细查看崩溃日志即可。
猜你喜欢
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 2011-01-28
相关资源
最近更新 更多