首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速PickerView标签错误

快速PickerView标签错误
EN

Stack Overflow用户
提问于 2015-07-29 00:35:44
回答 1查看 562关注 0票数 1
代码语言:javascript
复制
import UIKit

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

代码语言:javascript
复制
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"


}

}

你能向我解释一下我在上面标题中使用的错误行和行之间的区别吗?

为什么我会得到错误的底部一个。我想我声明是正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-29 05:05:24

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

此函数在选择器视图的值发生更改时运行(您试图使用的row参数,在创建pickerView时运行,而不是在值更改时运行)-

代码语言:javascript
复制
 func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)

另外,您希望创建一个全局变量,以便在您的row函数中使用row ( didSelectRow函数中的row参数只能在该函数中使用)。

所以在类定义下添加这段代码-

代码语言:javascript
复制
var rowSelected = 0

接下来,将这个函数添加到代码中-

代码语言:javascript
复制
 func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
      rowSelected = row
}

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

所以你的代码应该是这样的-

代码语言:javascript
复制
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
}

希望这能成功。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31689390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档