swift - 如何在一个 View Controller 中使用多个 UIPickerView

标签 swift uipickerview

我正在尝试在 1 个 View Controller 中设置 2 个 UIPickerView。我一直无法找到解决我的问题的资源。

我尝试按照 Diavel Rider 在 How to use 2 UIPickerView's in one View Controller? 上的回答进行操作.我从中得到了一些错误。我也尝试过添加标签,但未能成功。我正在使用 Swift 4。

这是我的 View Controller 的代码:

import UIKit

class FirstViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

    func pickerView(_ foodTypeUIPickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        var countrows : Int = nutritionPickerData.count
        if pickerView == foodTypeUIPickerView { **[Error Here: "Binary operator '==' cannot be applied to operands of type '_' and 'UIPickerView'"]**
            countrows = self.foodTypePickerData.count
        }
        return countrows
    }

    func pickerView(_ foodTypeUIPickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if pickerView == nutritionUIPickerView { **[Error Here: "Binary operator '==' cannot be applied to operands of type '_' and 'UIPickerView'"]**
            let titleRow = nutritionPickerData[row]
            return titleRow
        } else if pickerView == foodTypeUIPickerView { **[Error Here: "Binary operator '==' cannot be applied to operands of type '_' and 'UIPickerView'"]**
            let titleRow = foodTypePickerData[row]
            return titleRow
        }

        return ""

    }

    @IBOutlet weak var nutritionUIPickerView: UIPickerView!

    @IBOutlet weak var foodTypeUIPickerView: UIPickerView!

    var nutritionPickerData = ["Protein", "Fiber", "Iron", "Fat", "Sodium", "Calcium/Vitamin D", "Energy", "Carbohydrates", "Cholestorol"]
    var foodTypePickerData = ["Fruits", "Vegetables", "Legumes and Beans", "Grain", "Meat", "Dairy"]

    @IBAction func submitUIButton(_ sender: Any) {
    }

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

        self.nutritionUIPickerView.delegate = self
        self.nutritionUIPickerView.dataSource = self

        self.foodTypeUIPickerView.delegate = self
        self.foodTypeUIPickerView.dataSource = self

    }


}

我需要在 1 个 View Controller 中使用 2 个选择器 View 。我该怎么做?

最佳答案

您正在引用一个名为 pickerView 的不存在的变量。您应该将参数名称更新为 pickerView 以避免出现问题。

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    if pickerView == foodTypeUIPickerView {
        return self.foodTypePickerData.count
    } else {
        return self. nutritionPickerData.count
    }
}

对其他委托(delegate)/数据源方法进行类似的更改。

关于swift - 如何在一个 View Controller 中使用多个 UIPickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55527506/

相关文章:

iphone - UIPickerView 出现但不显示数据

ios - 操作表或警报可以有交互元素吗?

iphone - 自定义UIPickerView和UIDatePicker,扁平化设计

objective-c - UIPickerView 自旋困惑

ios - 如何在 Swift 中循环访问 UITableView 中的数据

Swift NSURLSession 请求到本地服务器 - 没有发送或接收数据

swift - swift 中带有表情符号的子字符串

ios - 无法在 Swift 的另一个协议(protocol)中将协议(protocol)用作关联类型

ios - Alamofire 模块不使用 Swift 3.0.1 编译

iOS7 UIPickerView/UIScrollView