【问题标题】:How to display a PickerView row content into a label如何将 PickerView 行内容显示到标签中
【发布时间】:2021-07-23 13:29:55
【问题描述】:

我是 Swift 的新手!我正在从几个来源学习。 我正在构建一个只有 2 个元素( PickerView 和 label )的小应用程序 我想知道如何让 PickerView 行内容显示到标签中? 还有一种方法可以显示行内容的更多信息吗?

import UIKit

class ViewController: UIViewController {
 
    @IBOutlet var picker: UIPickerView!
    
    let names = ["Sara", "Ali", "Joy"]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        picker.dataSource = self
        picker.delegate = self
    }


}
 
extension ViewController : UIPickerViewDataSource {
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return names.count
    }
    
    
    
}
extension ViewController : UIPickerViewDelegate {
    
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return names[row]
    }
    
    
}

例如:选择ALI时,我想在标签中显示“他得分90” 但我不希望在 PickerView 本身中将“他得分 90”这句话显示在 Ali 旁边

谢谢

【问题讨论】:

  • 提示:使用UIPickerView的委托方法之一。
  • 欢迎来到 Stack Overflow。请使用tour 并查看How to Ask。您的第一步应该是搜索...在 Google 上快速搜索 swift uipickerview tutorial 可以找到您需要的内容。
  • 我确实浏览过 Google,但我没有使用我的代码

标签: ios swift label datasource uipickerview


【解决方案1】:

感谢 El Tomato 的提示 它是委托方法之一 - didSelectRow 而且效果很好

import UIKit

class ViewController: UIViewController {
 
    @IBOutlet var picker: UIPickerView!
    @IBOutlet var label: UILabel!
    
    let names = ["Sara", "Ali", "Joy"]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        picker.dataSource = self
        picker.delegate = self
    }


}
 
extension ViewController : UIPickerViewDataSource {
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return names.count
    }
    
   
    
}
extension ViewController : UIPickerViewDelegate {
    
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return names[row]
       
    }
    
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        label.text = names[row]
    }
    
    
    
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多