然后下面的代码加载一个Struct数组并将其插入到UIPickerView
对象中,但是值没有显示在UIPickerView
内,但是如果我单击UIPickerView
将执行打印中包含的内容的值,将所选时间的值保存在变量中,如何解决此问题?
Code 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
}
答案 0 :(得分:0)
下载数据后,别忘了重新加载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()
});
}