swift - 如何在一个视图控制器中使用多个 UIPickerViews
问题描述
我正在尝试在 1 个视图控制器中设置 2 个 UIPickerViews。我一直无法找到解决我的问题的资源。
我尝试按照 Diavel Rider 关于如何在一个视图控制器中使用 2 个 UIPickerView 的答案进行操作?. 我从中得到了一些错误。我也尝试过添加标签,但未能成功。我正在使用 Swift 4。
这是我的视图控制器的代码:
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 个视图控制器中使用 2 个选择器视图。我该怎么做呢?
解决方案
您正在引用一个名为 的不存在的变量pickerView
。您应该更新参数名称pickerView
以避免出现问题。
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView == foodTypeUIPickerView {
return self.foodTypePickerData.count
} else {
return self. nutritionPickerData.count
}
}
对其他委托/数据源方法进行类似的更改。
推荐阅读
- excel - 在主工作簿中打开工作表并将其复制到某些工作表
- typescript - 由作为参数提供的回调的返回类型提供的函数的返回类型
- reactjs - Apache 配置允许直接导航到 React 的客户端 URL
- reactjs - 如何在 React 中更改 App 组件的状态
- sql - 无法使用 unnest 函数分隔多列值
- javascript - 我如何总是从 API 调用中选择最后一个 JSON 对象?
- scala - 无法使用用户名和密码创建 MQTT 流
- amazon-web-services - 如何诊断简单的 main.tf Terraform/AWS 错误?
- javascript - 使用 Chai HTTP 和 Express 发布数据未注册
- python - 如何在python中从网页复制信息