2017-05-11 32 views
0

我在网上查了一下,但找不到我问题的答案。对不起,如果它是我找不到的地方。如何在swift中乘以pickerview中的数字

所以我有一个选择器视图的名称,每个名称都有一个值。我想在另一个计算中添加这些值。 下面是代码:

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 

@IBOutlet var PickerPres: UIPickerView! 
@IBOutlet var LabelPres: UILabel! 

let PVpres:[(name: String, numb: Double)] = [("Blue",1), ("Red",2), ("Green",3)] 



func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 

    return 1 

} 

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 

    return PVpres[row].name 
} 

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return PVpres.count 

} 

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    LabelPres.text = PVpres[row].name 

} 

我也

var color = Float (ColorTextField.text!)! 
var item = Float (ItemTextField.text!)! 
var source = Float (SourceTextField.text!)! 

而且我想补充的麻木分配到项目中pickerView这样计算:

Total = color * PVpres[0].numb/item* source 

但没有工作

谢谢

JC

+2

如果您要编辑问题以描述* how *它无效,那将会很有帮助。是否有错误讯息?结果与您预期的不同?什么是实际问题? – Robert

+0

嗨,罗伯特!感谢您的回复 – John

+0

我还没有很好地描述对不起。它是Total =(color * PVpres [0] .num)/ item * source并且没关系。但如果我想添加任何行选择计算我试图把PVpres [行] .numb但有消息“未解决的标识符行” – John

回答

1

要从选取器中获取选定的行,您必须使用selectedRow(inComponent component:Int)方法。你也应该检查是否有任何行被选中。但是此代码假设您的计算基于简单的数组索引

let selectedRow = PickerPres.selectedRow(inComponent: 0) 

//check if any row is actually selected. if nothing is selected it will be -1 
if selectedRow != -1 { 
    Total = (color * PVpres[selectedRow].numb)/item* source 
} 
+0

非常感谢您的帮助!它是这样工作的。但是,我想要增加[麻木]而不是数组的排名。因为在我有[(“橙色”,7),(“粉红色”,10),(“黑色”,12)] – John

+0

我编辑了答案。现在检查它 –

+1

太棒了!它工作完美。非常感谢。问题解决了 – John