I add a UILabel
(金额标签)中UIViewController
在故事板编辑器中。然后在快速文件中,viewDidLoad
,我以编程方式创建一个UITextField
( paymentTextField ) 并尝试在之间添加约束amountLabel
and paymentTextField
。这是我的代码viewDidload
:
let paymentTextField = UITextField()
paymentTextField.translatesAutoresizingMaskIntoConstraints = false
paymentTextField.frame = CGRectMake(15, 100, CGRectGetWidth(self.view.frame) - 30, 44)
self.view.addSubview(paymentTextField)
let bottonConstraint = NSLayoutConstraint(item: paymentTextField, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: self.amountLabel , attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 30)
bottonConstraint.identifier = "paymentTextFieldSpacing"
NSLayoutConstraint.activateConstraints([bottonConstraint])
但我收到一个错误:
“由于未捕获的异常‘NSGenericException’而终止应用程序,
原因:“无法激活项目 > 和 > 的约束,因为它们没有共同的祖先。
约束是否引用不同视图层次结构中的项目?
这是非法的。”
有谁知道出了什么问题吗?amountLabel
直接拖动到情节提要中的视图,并以编程方式将“ paymentTextField”添加到同一视图。为什么他们没有共同的祖先?
我遇到了您之前描述的同样的问题。为了制作编程子视图(在您的例子中是 paymentTextField),您必须首先将其添加到子视图中,然后应用您的约束。
通过首先将子视图添加到视图中,这可以确保两个视图具有相同的父视图。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)