2016-08-22 4 views
0

Ich habe eine globale varWache liest Null aber var gleich etwas

var race: String? 

7 Tasten in einer Ansicht vertikale Scroll-0-6 innerhalb eines eingebetteten View-Controller in meinem Haupt-View-Controller markiert. Alle Schaltflächen sind mit einer IBAction verknüpft.

@IBAction func raceBtn(sender: UIButton) { 
    switch sender.tag { 
    case 0: 
     race = "American Indian" 
    case 1: 
     race = "Asian" 
    case 2: 
     race = "Black or African American" 
    case 3: 
     race = "Hispanic or Latino" 
    case 4: 
     race = "Pacific Islander" 
    case 5: 
     race = "White" 
    default: 
     race = "Other" 
    } 
} 

Eine weitere Taste, die Sie eine Auswahl getroffen haben überprüft, und es legt

@IBAction func submit(sender: AnyObject) { 
    guard let race = race where race != "" else { 
     return 
    } 
    print("yes") 
} 

Dies ist nicht durch wird Schritt, wenn ich eine Auswahl treffen. Ich habe den Hauptansicht-Controller und den eingebetteten, der die gleiche View-Controller-Datei verwendet. Ich benutze swift 2.2 xCode 7.3.1. Danke für jede Hilfe.

+1

Sind Sie sicher, dass die 'raceBtn' Methode aufgerufen wird? Können Sie am Anfang und am Ende dieser Methode einen Ausdruck ("Rasse") hinzufügen? – nathan

+0

Vielleicht eine debugPrint vor Ihrer Rückkehr, nach der Wache. – AMayes

+0

Was ist der Wert von "Rennen", wenn Sie auf "Senden" drücken? – Shades

Antwort

0

In einem Spielplatz, die Linie guard let race = race where race != "" else {return} ergibt eine Fehlermeldung von

Definition Konflikten mit früherem Wert

die Zeile ändern zu:

guard let selected = race where race != "" else { return } 

, wo die neue Variable jeder Name außer "Rennen"

0

Ich fand heraus, dass es Nil zeigt, weil ich den Wert von einem View-Controller an den anderen übergeben muss.