Вопросительный знак отображается в UIPickerView вместо данных области в Xcode 10 - PullRequest
0 голосов
/ 29 сентября 2018

Я учусь заполнять UIPickerView из базы данных Realm.

Проблема в том, что UIPickerView отображает "?"вместо данных.

Вот мой код:

import UIKit
import RealmSwift

class AjouterEmpruntViewController: UIViewController,    UIPickerViewDelegate, UIPickerViewDataSource {
    @IBOutlet weak var PickerViewListeAmis: UIPickerView!

    /* Initialisation de Realm */
    let realm = try! Realm()

    var data:Results<Ami>!
    var listOfFriends:[Ami] = []

    override func viewDidLoad() {
        super.viewDidLoad()

        /* Definition des sources du PickerView */
        self.PickerViewListeAmis.dataSource = self
        self.PickerViewListeAmis.delegate = self

        /* Constitution de la liste de pseudos d'amis pour alimenter le PickerView  */
        self.data = realm.objects(Ami.self)
        self.listOfFriends = Array(self.data)
    }

    @IBAction func btnSaveEmprunt(_ sender: UIBarButtonItem) {
        self.dismiss(animated: true)
    }

    @IBAction func btnCancelEmprunt(_ sender: UIBarButtonItem) {
        self.dismiss(animated: true)
    }

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

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

    private func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        print("pseudo = "+listOfFriends[row].pseudo)
        return listOfFriends[row].pseudo
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
    {
        print("selected Ami is "+listOfFriends[row].pseudo)
    }
}

Я следовал этому уроку http://sourcefreeze.com/ios-uipickerview-example-using-swift/

Не могли бы вы помочь мне решить проблему?

Вот результат: Проблема с?вместо данных 1

1 Ответ

0 голосов
/ 29 сентября 2018

У вас неверная сигнатура метода titleForRow, поэтому он не вызывается.

Это должно быть:

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?

not:

private func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?

Удалить private и добавить недостающие _.

...