2017-01-20 3 views
0

Ich arbeite an Swift 3, und ich versuche, Kontrollkästchen zu machen, die sich wie Radio-Buttons verhalten. Ich erkläre mich selbst: Ich habe 8 Knöpfe; Jedes hat ein "unchecked" Bild und ein "geprüftes" Bild. Ich möchte nur eine Taste auswählen, um das "geprüfte" Bild zu zeigen. Das Prinzip der Radioknöpfe. Also habe ich versucht, mit jeder Taste, um die @IBAction mit, ich habe dies:Swift Radio Buttons - CheckBoxes - Swift 3

@IBAction func tona1_changed(_ sender: Any) { 
if test_tona1.isSelected == true 
     { 
      test_tona1.setBackgroundImage(UIImage(named: "0b_unchecked"), for: UIControlState.normal) 

      test_tona1.isSelected = false 
     } 
     else 
     { 
      test_tona1.setBackgroundImage(UIImage(named: "0b_checked"), for: UIControlState.normal) 

      test_tona1.isSelected = true 
     }} 

Es tatsächlich das Bild zwischen „deaktivieren“ machen und „check“ aber ich weiß gar nicht, wie man es machen interagieren mit den anderen Tasten. Ich habe versucht, ein Array mit den Tags der Schaltflächen innerhalb verwenden, aber ich hatte nicht etwas funktioniert. Ich habe auch versucht, einen Kurs zu machen, aber ich weiß nicht, wie es funktionieren kann. Danke!

Antwort

1

Sie können das auf verschiedene Arten erreichen. Einer der trivialsten wäre:

  • Haben Sie eine Datenquelle. Meistens ein Array.
  • Erstellen Sie eine UIButton für jedes Element in Ihrer Datenquelle, und fügen Sie jede Schaltfläche in ein anderes Array ein. Jeder Knopf hätte eine Markierung, die dem Index des Arrays entspricht. Stellen Sie auch verschiedene Bilder für den ausgewählten Status und normal ein.
  • eine Aktion für jede Schaltfläche Hinzufügen, mit der Zielfunktion so etwas wie sein: Sie

    func buttonPressed(sender:UIButton) { 
        for button in buttons { 
         button.isSelected = false 
         // deselect your model datasource[button.tag] 
        } 
    
        sender.isSelected = true 
        // select your model datasource[button.tag] 
    } 
    

Ich lasse die Abstraktion/Verbesserungen/Sicherheit. Der Schlüsselpunkt besteht darin, nur eine Sammlung von Schaltflächen zu verwenden, sie zu durchlaufen und sie entsprechend zu markieren/abzuwählen, und nicht mit einer großen if/else-Prüfung für die Schaltfläche Tag jedes Mal.

+0

er kann auch alle Tasten auswählen und als "Outlet Collection" vom Interface Builder zum Code – muescha

+0

kürzen. Ja, aber seien Sie vorsichtig, da die Outlet Collection nicht dafür sorgt, dass die Bestellung respektiert wird. Sie müssen es nach Tag auf ViewDidLoad, die ein bisschen "hacky" scheinen kann. –