2016-09-23 2 views
0

У меня проблема с настройкой UIPickerView. Я поставил весь этот учебник, и я хотел бы изменить размер шрифта, но:UIPickerView: viewForRow не называется

  1. Изменение размера шрифта с помощью attributedTitleForRow не имеет никакого эффекта (хотя изменение цвета на самом деле работает)

  2. viewForRow никогда не вызывается. На всех.

Я использую Xcode 8 & Swift 2.3 и нацеливание IOS   8+. Ниже приведены все соответствующие биты кода:

Interface Builder (IB) подключение:

@IBOutlet weak var synapse: UIPickerView! 

Делегат связан с UIViewController:

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Préparation des gestionnaires de transition vers les différentes vues 
    self.transitionManagerNav.sourceViewController = self 
    self.transitionManagerNav.ordre = "travailleini2barrenav" 

    self.transitionManagerDesk.sourceViewController = self 
    self.transitionManagerDesk.ordre = "travailleini2desk" 

    self.synapse.dataSource = self 
    self.synapse.delegate = self 

    dateEnCours = graphique.pointDeReference.dateComplete 
} 

Реализация Делегат:

// UIPICKERVIEWDELEGATE 

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

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return elementsDefileur.count 
} 

func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { 
    return 17 
} 

func pickerView(pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat { 
    return synapse.frame.width 
} 

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
} 

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { 
    print("[viewForRow]") // THAT never happens (and yes, I am looking at the correct output window :o) 
    let pickerLabel = UILabel() 
    pickerLabel.textColor = UIColor.redColor() 
    pickerLabel.text = elementsDefileur[row] 
    pickerLabel.font = UIFont(name: "Arial-BoldMT", size: 5) 
    pickerLabel.textAlignment = NSTextAlignment.Left 
    return pickerLabel 
} 

Я пробовал все, что мог придумать, включая удаление и повтор используя UIPickerView из кода, а затем из (IB), перемещая ссылки делегата в viewWillAppear, каждую комбинацию titleForRow/attributedTitleForRow/viewForRow, очистку проекта и т. д.

Как исправить эту проблему?

+0

Вы включили UIPickerViewDelegate после имени класса? (Угадающ имя, предполагая его право.) I.e класс myViewController: UIViewController, UIPickerViewDelegate – Dallas

+0

yes Я сделал (извините за это забыть): – neimangu

+0

класс travailleViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { – neimangu

ответ

0

Имена атрибутов в объявлении функции делегата неверны. Это должно быть «reusingView», а не «повторное использование зрения»:

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView 

Я считаю, что документы Apple, содержат ошибку. У меня была такая же проблема, и я исправил ее, установив имя атрибута, как указано выше.

+0

Так много спасибо, Тим, ты спас мой день! (Извините за позднюю обратную связь) – neimangu

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