2015-04-14 12 views
5

Ho trovato alcune domande simili a questo ma nessuna delle soluzioni ha soddisfatto la mia situazione, e la maggior parte erano in obiettivo-c che non conosco.Come impostare un secondo componente con UIPickerView

Sto provando a creare un timer con minuti e secondi ma non riesco a capire come collegare il mio secondo componente.

Come si configura un secondo componente con UIPickerView?

Questo è quello che ho finora:

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

Si noti che i metodi UIPickerViewDataSource hanno un parametro 'component'. È necessario restituire un numero diverso di righe o un titolo diverso per la riga a seconda della sezione, quindi all'interno di questi metodi utilizzare semplicemente un'istruzione if o un'opzione per controllare la sezione. – Ian

+0

che ha funzionato, grazie Bluehound –

risposta

12

Grazie a @Bluehound per avermi nella giusta direzione. Ho dovuto guardare alcuni objective-c su GitHub per scoprire esattamente come farlo, questa è la risposta che cercavo:

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() 

    } 

questo è il risultato:

enter image description here

+0

questo è molto più chiaro in Swift. – Greg

Problemi correlati