2014-12-31 4 views
1

Вот код, который я использовал:PickerView не показывает никаких значений

// PickerView Functions 

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
    return 1 
} 

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

      return categoryArray.count // also tried with 5 or other numbers... 

} 

func pickerView(pickerView: UIPickerView, viewForRow row: Int, 
    forComponent component: Int, reusingView view: UIView!) -> UIView { 
     var lab : UILabel! 
      if let label = view as? UILabel { 
       lab = label 
      } else { 
       lab = UILabel() 
      } 
      lab.text = categoryArray[row] // also tried with text like "some test" 
      lab.backgroundColor = UIColor.clearColor() 
      lab.sizeToFit() 
      return lab 
} 

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     self.categoryLabel.text = categoryArray[row] 
} 

PickerViewDelegate установлен, и все выходы созданы и зацепил ... Если я запускаю этот код, он не возвращается любые значения из categoryArray, хотя это уже заполнено значениями. Я также попытался вручную заполнить Picker, но это также не сработало. Что может быть причиной, какие-то идеи?

+0

Возможно, ваш кадр равен 0,0,0,0? Вы можете проверить рамку сборщика и убедиться, что на самом деле он имеет размер? – Mike

+0

Добавить точку останова, чтобы увидеть, будет ли прыгать в делегат. И если бы вы назначили делегата куда-нибудь (себе)? –

+0

добавьте это как ответ и примите его, так что это не отображается как неотвеченный – manecosta

ответ

1

Спасибо ребята за комментарии, я нашел этот вопрос ... Я забыл установить делегат себя в viewDidLoad, я только реализован класс делегата, уверен, что не может работать ;-)

1
override func viewDidLoad() { 
    super.viewDidLoad() 

    picker.delegate = self 
    picker.dataSource = self 
    picker.tag = 1 
} 

Надеюсь, он работает.

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