UIPickerView не показывает данные из массива

#ios #swift

#iOS #swift

Вопрос:

Я пытаюсь создать простой вид выбора. это то, что у меня есть до сих пор, но данные не отображаются. В большинстве справок, которые я нашел, говорится, что нужно поместить код pickerview под viewDidLoad но это не на моем основном ViewController , поэтому я не уверен, что проблема в этом.

 import Foundation
import UIKit

class AddViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

    let formulaNumbers = ["Formula1", "Formula2", "Formula3", "Formula4", "Formula5", "Formula6"]
    let numberOfBatches = [1...100]

    @IBOutlet weak var pickerUI: UIPickerView!

    @IBAction func dissmissButton(_ sender:Any) {
        self.dismiss(animated: true, completion: nil)
    }

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

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if component == 0 {
            return formulaNumbers.count
        }
        return numberOfBatches.count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if component == 0 {
            return formulaNumbers[row]
        }
        return "(numberOfBatches[row])"
    }
}
  

В чем проблема и что мне делать? и заранее благодарю вас.

Комментарии:

1. Пожалуйста, назначьте делегат и источник данных для себя в viewDidLoad

Ответ №1:

Похоже, вы забыли подтвердить delegate и dataSource своему AddViewController для pickerUI

итак, в viewDidLoad методе добавьте

 pickerUI.dataSource = self
pickerUI.delegate = self
  

И ваш метод будет выглядеть так:

 override func viewDidLoad() {
    pickerUI.dataSource = self
    pickerUI.delegate = self
}