Ich möchte eine UILabel
auf die UISlider
's Daumen setzen.UISlider keine Subviews in ViewDidLoad()
Mein Code wird auf dieser Basis: Another SO question
Das Problem ist, dass mit diesem Code, dort auf dem Daumen keinen Text ist, bevor Sie den Wert zu ändern. Also habe ich ein paar Änderungen vorgenommen. Ich habe das Label zu einer globalen Variable gemacht und konfiguriere es in viewDidLoad()
. Dann ändere ich einfach den Text, wenn der Schieberegler den Wert ändert.
Das eigentliche Problem ist dies (Code in viewDidLoad()
):
let thumbView = mySlider.subviews.last
label.frame = (thumbView?.bounds)!
mySlider
‚s subviews
Array ist leer. Daher erzeugt es einen Absturz, da ich einen Nullwert entpacke.
Ich verstehe nicht, warum das passiert, da die Ansicht vollständig initialisiert ist.
Warum ist mySlider.subviews
leer? Was vermisse ich? Weiß jemand wie ich das beheben kann? Gibt es eine andere Möglichkeit, das Etikett in der Mitte des Daumens zu platzieren?
Ihre Ansicht ist vollständig initialisiert aber Ihr Regler des Subviews nicht unbedingt. Die thumbView wird wahrscheinlich instanziiert, also wurde sie nicht in 'viewDidLoad' erstellt, da sie noch nicht aufgerufen wurde. Sie sollten den @ Zac Kwan-Vorschlag verwenden, um zu vermeiden, dass Sie die Ansichtshierarchie des Schiebereglers direkt bearbeiten müssen. – beyowulf
@beyowulf Gibt es eine Möglichkeit, die Initialisierung zu erzwingen? –