IBOutlet Eigenschaften null nach benutzerdefinierten Ansicht geladen xib
Etwas seltsam Los mit IBOutlets.
Im code ich habe versucht, Zugriff auf diese Eigenschaften, aber Sie sind nil
. Code:
class CustomKeyboard: UIView {
@IBOutlet var aButt: UIButton!
@IBOutlet var oButt: UIButton!
class func keyboard() -> UIView {
let nib = UINib(nibName: "CustomKeyboard", bundle: nil)
return nib.instantiateWithOwner(self, options: nil).first as UIView
}
override init() {
super.init()
commonInit()
}
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
//MARK: - Private
private func commonInit() {
println(aButt)
//aButt is nil
aButt = self.viewWithTag(1) as UIButton
println(aButt)
//aButt is not nil
}
}
InformationsquelleAutor der Frage Sk0prion | 2015-02-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass zu erwarten ist, weil die IBOutlet(s) zugeordnet sind, die von der Zeit der Initialisierung aufgerufen wird. Sie brauchen nicht die commonInit, nur ein überschreiben der awakeFromNib wie folgt:
InformationsquelleAutor der Antwort fz.
Ihrer Feder dürfen nicht angeschlossen werden. Meine Lösung ist ganz einfach. Irgendwo in Ihrem Projekt (ich erstelle eine Klasse namens UIViewExtension.swift), eine Erweiterung hinzufügen von UIView mit diesem handlichen connectNibUI Methode.
Rufen Sie nun diese Methode auf eine beliebige Ansicht, die in Ihrer init-Methode, dies zu tun:
InformationsquelleAutor der Antwort Josh O'Connor
Und wie haben Sie initiieren Ihren Blick von der controlller? Wie diese:
InformationsquelleAutor der Antwort szpetip
Vorausgesetzt, Sie versucht, die standard-Schritte zur Fehlerbehebung für die Verbindung IBOutlets, versuchen Sie dies:
Offenbar, die Sie benötigen, zu deaktivieren wach aus Spitze in bestimmten Laufzeit Fällen.
InformationsquelleAutor der Antwort ScottyBlades