我怎样才能激活以前停用的约束?

How can I activate, previously deactivated constraint?

我保留对我的 NSLayoutConstraint

的引用
var flag = true
@IBOutlet weak var myConstraint: NSLayoutConstraint!

然后对于某些 @IBAction 我 activate/deactivate 取决于我的 flag 变量:

@IBAction func tapped(sender: UIButton) {
    flag = !flag
    UIView.animateWithDuration(1.0) {
        if self.flag {
            NSLayoutConstraint.activateConstraints([self. myConstraint])
        } else {
            NSLayoutConstraint.deactivateConstraints([self. myConstraint])
        }
    }
}

但是当我再次调用我的操作时,myConstrain 出现错误 unexpectedly found nil while unwrapping an Optional value

此外,它没有动画。我做错了什么?

我遵循 WWDC 2015 的教程:

停用约束与为视图调用 removeConstraint: 相同。参考documentation。因此,当您删除具有 weak 引用的对象时,将导致对象释放。现在这个对象是 nil 并且激活它根本不会有任何效果。要解决此问题,您需要对约束对象有强引用。

@IBOutlet strong var myConstraint: NSLayoutConstraint!