ho mantenere i riferimenti alla mia NSLayoutConstraint
Come posso attivare il vincolo precedentemente disattivato?
var flag = true
@IBOutlet weak var myConstraint: NSLayoutConstraint!
poi per qualche @IBAction
posso attivare/disattivare a seconda del mio flag
variabile:
@IBAction func tapped(sender: UIButton) {
flag = !flag
UIView.animateWithDuration(1.0) {
if self.flag {
NSLayoutConstraint.activateConstraints([self. myConstraint])
} else {
NSLayoutConstraint.deactivateConstraints([self. myConstraint])
}
}
}
Ma quando chiamo ancora una volta la mia azione, ho un errore unexpectedly found nil while unwrapping an Optional value
per myConstrain
.
Altro su di esso non animato. Che cosa sto facendo di sbagliato?
seguo tutorial dal WWDC 2015:
mantenere un riferimento forte dell'oggetto nella dichiarazione IBOutlet. '@IBOutlet strong var myConstraint: NSLayoutConstraint!' – Gandalf
Il commento di Gandalf è corretto. la disattivazione di un vincolo deve far sì che la gerarchia delle viste ne rilasci la proprietà. se non si mantiene un riferimento forte, sarà deallocato. @ Gandalf, dovresti rendere questa una risposta in modo che l'OP possa accettarla. –