2015-04-14 2 views
5

Я нашел некоторые подобные вопросы, но ни одно из решений не соответствовало моей ситуации, и большинство из них были объективными, о которых я не знаю.Как настроить второй компонент с помощью UIPickerView

Я пытаюсь создать таймер с минут и секунд, но я не могу понять, как подключить мой второй компонент.

Как настроить второй компонент с помощью UIPickerView?

Это то, что я до сих пор:

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

Обратите внимание, что методы UIPickerViewDataSource имеют параметр 'component'. Вам нужно вернуть другое количество строк или другой заголовок для строки в зависимости от раздела, поэтому в этих методах просто используйте оператор if или переключатель для проверки раздела. – Ian

+0

, который сработал, спасибо Bluehound –

ответ

12

Благодаря @Bluehound указал мне в правильном направлении. Я должен был смотреть на какой-то objective-c на GitHub, чтобы выяснить, как именно это сделать, это ответ, который я искал:

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

    } 

Это результат:

enter image description here

+0

это намного яснее в Swift. – Greg

Смежные вопросы