我在一个类中有一个对象数组,并试图将该数组引用到 UIPickerView
,但是当 UITextField
被点击时,它崩溃并返回 nil。当点击 countryInput 文本字段时,它应该显示带有“摩纳哥,日本”等的选择器 View ......关于我做错了什么的任何想法?提前谢谢你。
class SelectionViewController: UIViewController {
var lifeArr : [LifeClass] = []
let picker = UIPickerView()
override func viewDidLoad() {
super.viewDidLoad()
let Monaco = LifeClass()
Monaco.country = "Monaco"
Monaco.male = 85.6
Monaco.female = 93.5
let Japan = LifeClass()
Japan.country = "Japan"
Japan.male = 81.9
Japan.female = 88.8
lifeArr = [Monaco, Japan]
}
}
class SetupViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var birthDayInput: UITextField!
@IBOutlet weak var countryInput: UITextField!
var selectionData : SelectionViewController!
var picker = UIPickerView()
override func viewDidLoad() {
super.viewDidLoad()
picker.dataSource = self
picker.delegate = self
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return selectionData.lifeArr.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return selectionData.lifeArr[row].country
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
countryInput.text = selectionData.lifeArr[row].country
}
}
最佳答案
创建一个新类来保存这些数据,并在任何需要访问它的 VC 中使用它。例如
class LifeClassDatabase
{
var lifeArr : [LifeClass] = []
init()
{
let Monaco = LifeClass()
Monaco.country = "Monaco"
Monaco.male = 85.6
Monaco.female = 93.5
let Japan = LifeClass()
Japan.country = "Japan"
Japan.male = 81.9
Japan.female = 88.8
lifeArr = [Monaco, Japan]
}
}
从例如SetupViewController
顶级:-
private var lifeClassDatabase = LifeClassDatabase()
然后在您的数据源代码中使用它,例如:
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return lifeClassDatabase.lifeArr.count
}
关于arrays - 数组返回 null 并崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56320327/