我在程序设计上非常新,我正在尝试构建一个应用程序,但我无法弄清楚如何解决我的问题。所有的帮助都很高兴!!!!
所以在我的应用程序中有2个pickerViews,每个pickerView包含相同的信息。我的问题是,我想从两者中获取信息,然后将其连接到Google或Yahoo以在2之间找到正确的计算,并在显示屏的底部显示该计算。
我所做的是使用函数didSelectRow for pickerView,我添加了一个模态警报,这样当我滚动pickerView时我可以告诉该函数正在运行,但是它对于两个pickerViews都是这样做我想要的两个pickerViews都是完全独立的功能。
我的主要问题是我无法访问didSelectRow中的数据,因此我可以在另一个函数中进行计算(我已经设置了一个函数来处理带有占位符乘数的计算/转换,直到我将它连接到API)。我知道来自该函数的数据超出了范围(这是编译器给我的错误)但是我无法弄清楚如何访问这些信息,我已经搜索了几周。
非常感谢你!所有的帮助很高兴赞赏!!!!! PS。这是在斯威夫特。
答案 0 :(得分:2)
如果您为两个pickerViews创建@IBOutlet
:
@IBOutlet weak var picker1: UIPickerView!
@IBOutlet weak var picker2: UIPickerView!
您可以通过以下方式访问每个选定的行:
let row1 = picker1.selectedRow(inComponent: 0)
let row2 = picker2.selectedRow(inComponent: 0)
然后,您可以将它们用作为您的拣货员提供数据的数组的索引。
作为一个例子,我创建了一个带有两个选择器的视图,每当其中一个选择器发生变化时我会打印出这个总和:
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var picker1: UIPickerView!
@IBOutlet weak var picker2: UIPickerView!
var data = [1, 2, 3, 4, 5]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let sum = data[picker1.selectedRow(inComponent: 0)] + data[picker2.selectedRow(inComponent: 0)]
print(sum)
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return data.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return String(data[row])
}
}