如何激活先前已停用的约束?

时间:2015-07-11 14:57:29

标签: ios swift nslayoutconstraint wwdc

我保留对NSLayoutConstraint

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

然后对于某些@IBAction我根据我的flag变量激活/停用:

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

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

更多关于它没有动画。我做错了什么?

我遵循WWDC 2015的教程:

enter image description here

1 个答案:

答案 0 :(得分:16)

取消激活约束与为视图调用database1相同。请参阅documentation。因此,当您删除具有removeConstraint:引用的对象时,将导致对象取消分配。现在这个对象是weak,激活它根本就没有任何效果。要解决此问题,您需要强烈引用约束对象。

nil