2017-03-22 1 views
1

initialisiert wurde ich stehe vor einem Problem, das den Standardwert des Schalterknopfes betrifft. Wenn die Umschalttaste nicht verwendet wird, gibt Xcode den Fehler "unerwarteterweise gefunden Null beim Entpacken eines optionalen Werts". Ich muss den Standardwert auf wahr oder falsch setzen, wenn der Schalter nicht verwendet wird. Ich habe einige Artikel zu diesem Thema gefunden, aber sie haben nicht funktioniert.Wie man einen Standard boolean für einen Schalter einstellt, der durch Storyboard

Mein Schalter Taste wird über das Storyboard initialisiert:

@IBAction func FußballPreferenzSwitch(_ sender: UISwitch) { 

    if (sender.isOn == true) { 

     FußballPreferenz = "Ja" 
    }else { 

     FußballPreferenz = "Nein" 
    } 
} 

Die folgende Lösung für mich nicht geklappt hat, denn ich habe keinen Schlüssel oder zumindest ich weiß nicht, was ist der Schlüssel.

In applicationDidFinishLaunching rieten sie den folgenden Code zu schreiben:

let userDefaults = UserDefaults.standard 
let defaultValues : [String : Any] = ["key" : false] 
userDefaults.register(defaults: defaultValues) 

Wie kann ich ändern müssen Sie den folgenden Code zu verwenden, um es in meinen Zweck? Oder gibt es eine andere Möglichkeit, dieses Problem zu lösen?

+1

Was bedeutet * nicht verwendet * bedeutet? Sie können einen Standardwert direkt in Interface Builder festlegen. – vadian

+0

Es bedeutet, dass der Knopf nicht berührt wurde. Wenn die Schaltfläche nicht berührt wird, sollte der boolesche Wert der Umschalttaste wahr sein, so dass die Variable "FußballPreferenz" gleich = "Ja" ist. – AlexVilla147

+0

Es ist unklar, was Sie erreichen werden. Möchten Sie den Wert nach dem Umschalten beibehalten? Warum und wann bekommst du * unerwartet gefunden ... * Fehler? – vadian

Antwort

1

Vereinbaren Sie einen IBOutlet Ihrer Schalter, dann auf viewDidload oder viewDidAppear (die je erfordert, dass Sie Anforderung)

if uiSwitch.isOn { 
    FußballPreferenz = "Ja" 
} else { 
    FußballPreferenz = "Nein" 
} 

Dies stellt sicher, dass alles, was der Standardwert auf Storyboard setzen auf Ihre Variable auf didload/didappear reflektiert wird auch wenn der Benutzer den Wert des Schalters nicht geändert hat.

+0

Prost Mate! Das funktioniert. Nur noch eine Frage. Haben Sie eine Idee, wie Sie das gleiche Problem mit einer segmentierten Steuerung lösen können? – AlexVilla147

0

Gerade für sie hier falls jemand anders zu sein (Neuling wie ich war) für einen Schnipsel gesucht:

Auf der Spitze des Codes (Class Definition) hinzufügen:

@IBOutlet weak var switchImageBeingDisplayed: UISwitch! 

und Weiter unten definiert die Schaltfläche:

@IBAction func switchImageBeingDisplayedChanged(_ sender: Any) { 
    if switchLockLanguages.isOn { 
     image1.isHidden = true} 
    else { 
     image2.isHidden = false 
    } 
} 
Verwandte Themen