UiPickerView 不显示值

UiPickerView not display value

然后下面的代码加载了一个Struct数组并将它们插入到一个UIPickerView对象中,但是值没有显示在UIPickerView里面但是如果我点击UIPickerView执行打印中包含的内容的值,选择时间的值保存在一个变量中,如何解决?

代码Swift:

import UIKit

class GestioneArticoliViewController: UIViewController, UITableViewDelegate,UIPickerViewDelegate, UIPickerViewDataSource, UITableViewDataSource
{

    private var TipologiaLoad: [TipologiaStruct] = []
    private var TipologiaUIPicker: UIPickerView = UIPickerView()


    override func viewDidLoad() {

        super.viewDidLoad()
        hideKeyboardWhenTappedAround()
        self.view.backgroundColor = UIColor.white
        ..
        //UILabel rapportino
        labelRapportino = UILabel(frame: CGRect(x: 290, y: 280, width: 200, height: 21))
        labelRapportino.font = UIFont(name: "HelveticaNeue-Bold", size: 16.0)
        labelRapportino.text = "Rapportino: "
        self.view.addSubview(labelRapportino)
        //Configurazione UIPickerView Articolo
        let label = UILabel(frame: CGRect(x: (self.view.frame.width / 2) - 170, y: 310, width: 90, height: 24))
        label.font = UIFont(name: "HelveticaNeue-Bold", size: 16.0)
        label.textAlignment = .center
        label.text = "Tipologia: "
        self.view.addSubview(label)
        //Configurazione :impostazioni picker view
        self.TipologiaUIPicker = UIPickerView(frame: CGRect(x: (self.view.frame.width / 2) - 70, y: 300, width: 200, height: 50))
        self.TipologiaUIPicker.delegate = self
        self.TipologiaUIPicker.dataSource = self
        self.TipologiaUIPicker.backgroundColor = UIColor.white
        self.view.addSubview(TipologiaUIPicker)
        /* carico gli aritcoli del cantiere e le tipologie */
        CaricaArticoliCantiere()
        CaricaTipologie()
        SwitchRapportino.isHidden = false
        labelRapportino.isHidden = false

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }


    @objc func Return(sender: UIButton!) {
        let CantiereSelezionato = GestioneCantieriViewController(CantiereSet: CantiereInterno!)
        self.present(CantiereSelezionato, animated: true, completion: nil)
    }



    //Funzione per il caricamento tipologie articoli
    func CaricaTipologie()
    {
        let atemp = ArticoloCantiere(Cantiere: CantiereInterno)
        atemp.CaricaTipologieArticoli(completion: { result in
            self.TipologiaLoad = result
        });
    }

    //Metodo delegato che ritorna il numero di righe
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return TipologiaLoad.count
    }

    // Metodo delegato che ritorna il valore mostrato nella riga
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
    {
        IdTipologia = TipologiaLoad[row].IdTipologiaPreventivo
        return TipologiaLoad[row].NomeTipologia
    }

    // Metodo Delato Chiamao quando viene selezionata una righa
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        print("\n TipologiaLoad[row].IdUtente \(TipologiaLoad[row].IdTipologiaPreventivo!)")
        IdTipologia = TipologiaLoad[row].IdTipologiaPreventivo!
        print("\n TipologiaLoad[row].NomeTipologia \(TipologiaLoad[row].NomeTipologia!)")
    }

    //Number of Columns into UIPickerView
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

下载数据后不要忘记重新加载 pickerView。

//Funzione per il caricamento tipologie articoli
func CaricaTipologie()
{
    let atemp = ArticoloCantiere(Cantiere: CantiereInterno)
    atemp.CaricaTipologieArticoli(completion: { result in
        self.TipologiaLoad = result
        self.TipologiaUIPicker.reloadAllComponents()
    });
}