访问存储在 class Swift 中的变量
Accessing a variable stored within a class Swift
我不明白为什么我不能访问这个变量,见下文,我想要运动结果被点击时的值,但是 sportResult.selectedSport returns 没有?
let sportPickerData = SportPickerData()
override func viewDidLoad() {
super.viewDidLoad()
sportPickerView.delegate = sportPickerData
sportPickerView.dataSource = sportPickerData
class SportPickerData: NSObject, UIPickerViewDataSource, UIPickerViewDelegate {
var sports = ["Football", "Baseball", "Hockey", "Basketball"]
var selectedSport: String?
func numberOfComponentsInPickerView(yearPicker: UIPickerView) -> Int {
return 1
}
func pickerView(yearPicker: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return sports.count
}
func pickerView(yearPicker: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
selectedSport = sports[row]
}
func pickerView(yearPicker: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return "\(sports[row])"
}
}
let sportResult = SportPickerData()
@IBAction func button(sender: UIButton) {
label.text = sportResult.selectedSport
}
sportResult 它不是您的选择器视图的委托或数据源,因此它的 selectedSport 属性 永远不会被初始化,因为它的 didSelectRow 方法永远不会被调用。要获取 selectedSport,您必须从 sportPickerData 获取它,它实际上是您的选择器的委托和数据源
let sportResult = SportPickerData() // delete this line
@IBAction func button(sender: UIButton) {
label.text = sportPickerData.selectedSport
}
我不明白为什么我不能访问这个变量,见下文,我想要运动结果被点击时的值,但是 sportResult.selectedSport returns 没有?
let sportPickerData = SportPickerData()
override func viewDidLoad() {
super.viewDidLoad()
sportPickerView.delegate = sportPickerData
sportPickerView.dataSource = sportPickerData
class SportPickerData: NSObject, UIPickerViewDataSource, UIPickerViewDelegate {
var sports = ["Football", "Baseball", "Hockey", "Basketball"]
var selectedSport: String?
func numberOfComponentsInPickerView(yearPicker: UIPickerView) -> Int {
return 1
}
func pickerView(yearPicker: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return sports.count
}
func pickerView(yearPicker: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
selectedSport = sports[row]
}
func pickerView(yearPicker: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return "\(sports[row])"
}
}
let sportResult = SportPickerData()
@IBAction func button(sender: UIButton) {
label.text = sportResult.selectedSport
}
sportResult 它不是您的选择器视图的委托或数据源,因此它的 selectedSport 属性 永远不会被初始化,因为它的 didSelectRow 方法永远不会被调用。要获取 selectedSport,您必须从 sportPickerData 获取它,它实际上是您的选择器的委托和数据源
let sportResult = SportPickerData() // delete this line
@IBAction func button(sender: UIButton) {
label.text = sportPickerData.selectedSport
}