ios - Swift 以编程方式向 super View 添加约束

标签 ios swift nslayoutconstraint ios-autolayout

我想添加一些简单的约束,但总是会出现这样的错误:

由于未捕获的异常“NSGenericException”而终止应用程序,原因:“无法在 View 上安装约束。约束是否引用了 View 子树之外的内容?这是非法的。

我的想法是将选择器 View 添加到 TableView 中。当用户单击表项时,将显示此选择器 View 。这是我的代码:

class InscriptionTableViewController: UITableViewController, UIPickerViewDelegate, UIPickerViewDataSource {

     var pickView:UIPickerView!

     override func viewDidLoad() {
         pickView = UIPickerView()
         pickView.delegate = self
         pickView.dataSource = self
         pickView.hidden = true
         pickView.backgroundColor = UIColor.whiteColor()
         self.view.addSubview(pickView)

         let topContrain = NSLayoutConstraint(
             item: pickView,
             attribute: NSLayoutAttribute.Top,
             relatedBy: NSLayoutRelation.Equal,
             toItem: self.view,
             attribute: NSLayoutAttribute.Top,
             multiplier: 1,
             constant: 0)
         let bottomContrain = NSLayoutConstraint(
             item: pickView,
             attribute: NSLayoutAttribute.Bottom,
             relatedBy: NSLayoutRelation.Equal,
             toItem: self.view,
             attribute: NSLayoutAttribute.Bottom,
             multiplier: 1,
             constant: 0)
         pickView.addConstraint(topContrain)
         pickView.addConstraint(bottomContrain)
     }
}

最佳答案

self.view.addConstraint(topContrain)
self.view.addConstraint(bottomContrain)

关于ios - Swift 以编程方式向 super View 添加约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37823762/

相关文章:

swift - 通过更改约束常量来动画 View

ios - Swift iOS -Constraint 即使调用了 view.layoutIfNeeded() 也没有动画

android - 使用 Cordova 插件的 Google Cloud Messaging IOS 注册

objective-c - 将时间以微秒为单位转换为分钟和秒

swift - parse.com 中的字典字段

arrays - swift 数组方法 "starts(with:)"导致类型 "Range<Int>"的值没有数字 "starts"

ios - iAd 在模拟器上工作但在设备 (ipad) 上崩溃

ios - 向 Core Data 托管对象添加 `lastModified` 记录

swift - 标签栏 Controller 中的标签栏 Controller

ios - 不明确的布局 - 我需要为两个并排 View 添加哪些额外的约束?