2015-04-14 2 views
5

Ich habe einige ähnliche Fragen zu diesem gefunden, aber keine der Lösungen passte zu meiner Situation, und die meisten waren in objective-c, die ich nicht kenne.Wie installiere ich eine zweite Komponente mit einem UIPickerView

Ich versuche, einen Timer mit Minuten und Sekunden zu erstellen, aber ich kann nicht herausfinden, wie man meine zweite Komponente verdrahtet.

Wie richte ich eine zweite Komponente mit einem UIPickerView ein?

Dies ist, was ich bisher:

enter image description here

TimeViewController.swift

class TimeViewController: UIViewController, UIPickerViewDelegate { 

    @IBOutlet weak var timeSegueLabel: UILabel! 

    let minutes = Array(0...9) 
    let seconds = Array(0...59) 

    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 

     return 2 
    } 

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 

     return minutes.count 

    } 

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! { 

     return String(minutes[row]) 

    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

    } 
} 
+4

Beachten Sie, dass die UIPickerViewDataSource-Methoden einen 'component' Parameter haben. Sie müssen abhängig vom Abschnitt eine andere Anzahl von Zeilen oder einen anderen Titel für die Zeile zurückgeben. Verwenden Sie innerhalb dieser Methoden einfach eine if-Anweisung oder einen Schalter, um den Abschnitt zu überprüfen. – Ian

+0

das hat funktioniert, danke Bluehound –

Antwort

12

Dank für das @Bluehound mich in die richtige Richtung. Ich hatte irgend objective-c auf GitHub sehen genau, um herauszufinden, wie es zu tun, das ist die Antwort, die ich suchte:

TimeViewController:

class TimeViewController: UIViewController, UIPickerViewDelegate { 

    @IBOutlet weak var timeSegueLabel: UILabel! 

    let minutes = Array(0...9) 
    let seconds = Array(0...59) 

    var recievedString: String = "" 

    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 

     return 2 

    } 

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     //row = [repeatPickerView selectedRowInComponent:0]; 
     var row = pickerView.selectedRowInComponent(0) 
     println("this is the pickerView\(row)") 

     if component == 0 { 
      return minutes.count 
     } 

     else { 
      return seconds.count 
     } 

    } 

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! { 

     if component == 0 { 
     return String(minutes[row]) 
     } else { 

     return String(seconds[row]) 
     } 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     timeSegueLabel.text = recievedString 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 

    } 

Dies ist das Ergebnis:

enter image description here

+0

das ist so viel klarer in Swift. – Greg