繁体   English   中英

Swift PickerView标签错误

[英]Swift PickerView label error

import UIKit

类ViewController:UIViewController,UIPickerViewDataSource,UIPickerViewDelegate {@IBOutlet变量选择器:UIPickerView! @IBOutlet var标签:UILabel!

var Array = ["Iphone", "겔럭시", "베가아이언"]

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    picker.delegate = self
    picker.dataSource = self

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
    return Array[row]
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return Array.count
}

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 1
}
@IBAction func buttonTapped(sender: AnyObject) {
                    label.text = Array[row]       ///this part error "use of unresolved identifier row"


}

}

您能告诉我错误行与上面我用于标题的行之间的区别吗?

为什么我会为最底层的错误。 我认为我正确声明。

(我假设您希望用户点击按钮时更改标签的文本)

该函数在pickerView的值更改后运行(您尝试使用的row参数,在创建pickerView时运行,而不是在值更改时运行)-

 func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)

另外,您还想创建一个全局变量,以便可以在IBAction函数中使用row (didSelectRow函数中的row参数只能在该函数内部使用)。

因此,将这部分代码添加到类定义下-

var rowSelected = 0

接下来,将此功能添加到您的代码中-

 func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
      rowSelected = row
}

最后,将label.text = Array[row]更改为label.text = Array[rowSelected] (这也会使未解决的标识符错误消失)。

因此,您的整个代码应如下所示:

var rowSelected = 0
var Array = ["Iphone", "겔럭시", "베가아이언"]

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    picker.delegate = self
    picker.dataSource = self

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
    return Array[row]
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return Array.count
}

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 1
}
@IBAction func buttonTapped(sender: AnyObject) {
       label.text = Array[rowSelected]


}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
      rowSelected = row
}

希望能解决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM