2015-04-14 21 views
5

Tôi đã tìm thấy một số câu hỏi tương tự như này, nhưng không ai trong số các giải pháp phù hợp hoàn cảnh của tôi, và nhất là trong Objective-C mà tôi không biết.Làm thế nào để thiết lập một thành phần thứ hai với một UIPickerView

Tôi đang cố gắng để tạo ra một bộ đếm thời gian từ phút và giây nhưng tôi không thể tìm ra cách để dây lên thành phần thứ hai của tôi.

Làm thế nào để thiết lập một thành phần thứ hai với một UIPickerView?

Đây là những gì tôi có cho đến nay:

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

Lưu ý rằng các phương thức UIPickerViewDataSource có thông số 'thành phần'. Bạn cần trả về một số hàng khác nhau hoặc một tiêu đề khác nhau cho hàng tùy thuộc vào phần, vì vậy trong các phương thức này, chỉ cần sử dụng câu lệnh if hoặc nút chuyển để kiểm tra phần. – Ian

+0

đã hoạt động, nhờ Bluehound –

Trả lời

12

Nhờ @Bluehound đã chỉ cho tôi đi đúng hướng. Tôi đã phải xem xét một số objective-c trên GitHub để tìm hiểu chính xác làm thế nào để làm điều đó, đây là câu trả lời tôi đang tìm kiếm:

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

    } 

Đây là kết quả:

enter image description here

+0

điều này rõ ràng hơn rất nhiều trong Swift. – Greg

Các vấn đề liên quan