jsl*_*oop 6 ios swift ios-autolayout
我正在尝试向我创建并添加以编程方式查看的表视图添加约束。我想根据 a 来约束它,UITextField这是一个IBOutlet. 但是,我收到以下错误:
*** 由于未捕获的异常“NSGenericException”而终止应用程序,原因:“无法激活带有锚点的约束,因为它们没有共同的祖先。约束或其锚点是否引用不同视图层次结构中的项目?这是非法的。
@IBOutlet weak var authorTextField: UITextField!
override func viewDidLoad() {
myTableView = MyTableView(frame: CGRect(x: 0, y: 80, width: 320, height: 120), style: .plain)
myTableView!.isHidden = false
myTableView!.backgroundColor = UIColor.green
self.view.addSubview(myTableView!)
myTableView.setConstraints(to: authorTextField) // <-- this fails
Run Code Online (Sandbox Code Playgroud)
// MyTableView.swift ..
func setConstraints(to view: UIView)
self.translatesAutoresizingMaskIntoConstraints = false
self.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 8.0).isActive = true
self.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -8.0).isActive = true
}
Run Code Online (Sandbox Code Playgroud)
如何添加这个约束呢?
Erh*_*rci 13
如果您没有将视图添加到视图层次结构中,则会遇到此问题。我添加了 addSubview 并且运行良好
addSubview(view)
Run Code Online (Sandbox Code Playgroud)
或者
self.view.addSubview(view)
Run Code Online (Sandbox Code Playgroud)
答案就在错误消息中。您的属性authorTextField位于另一个视图层次结构中。进入故事板并将文本字段放在同一视图中。另一方面,不要混合设置框架和自动布局约束,我认为你在这里感到困惑。代替
MyTableView(frame: CGRect(x: 0, y: 80, width: 320, height: 120), style: .plain)
写
MyTableView(frame: CGRect.zero, style: .plain)
并向您的 setConstraints 方法添加高度约束
self.view.heightAnchor.constraint(equalToConstant: 120).isActive = true
| 归档时间: |
|
| 查看次数: |
14088 次 |
| 最近记录: |