2016-07-20 13 views
0

Ich habe eine UITableView in einem UIViewController. Es gibt zwei benutzerdefinierte Zellen. Einer davon hat ein UISegmentedControl.Swift - Wie wird das ausgewählte Steuerelementsegment in eine UITableView-Zelle eingebettet?

enter image description here

So weit, so gut.

Wenn ich auf das Steuerelement tippe, ändert sich der segmentierte Steuerwert und die IBAction-Funktion wird wie erwartet ausgeführt.

Das Problem ist, dass der ausgewählte Index immer als -1 angezeigt wird (auch nichts ausgewählt).

Was fehlt mir hier? Hier

ist der Code für die Wertänderung:

@IBAction func recurranceChanged(sender: UISegmentedControl?) { 

     print ("index: ", recurrenceControl.selectedSegmentIndex) << This returns -1 

     if recurrenceControl.selectedSegmentIndex == 0 { 
      print("No ") 
     } 

     if recurrenceControl.selectedSegmentIndex == 1 { 
      print("Sometimes ") 

     } 


     if recurrenceControl.selectedSegmentIndex == 2 { 
      print("Yes") 

     } 

    } 
+1

Haben Sie versucht, 'sender' anstelle von' recurrenceControl' zu verwenden? – OOPer

+0

Das ist es .. Wenn Sie es zu einer Antwort machen wollen, werde ich das schließen .. BTW .. Für andere sollte der Code "Absender? .selectedSegmentIndex" –

+0

Sie können eine Antwort auf Ihre eigene Frage. "BTW", in Aktionsmethoden müssen Sie nicht optional, deklarieren Sie den Parameter als 'sender: UISegmentedControl' (nein'? ') Und verwenden Sie als' sender.selectedSegmentIndex'. – OOPer

Antwort

0

Versuchen Sie folgendes: (Auch die entfernt von UISegmentedControl, da es nicht nötig ist '?'.)

@IBAction func recurranceChanged(sender: UISegmentedControl) { 

    print ("index: ", sender.selectedSegmentIndex) 

    if sender.selectedSegmentIndex == 0 { 
     print("No ") 
    } 

    if sender.selectedSegmentIndex == 1 { 
     print("Sometimes ") 

    } 


    if sender.selectedSegmentIndex == 2 { 
     print("Yes") 

    } 

} 

dieses Problem lösen soll das Problem;)

+0

Vielen Dank. Perfect –

+0

sogar können Sie den Titel von "segment.titleForSegment (at: indexValue)" –