簡體   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