2017-05-11 70 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