2017-05-11 4 views
0

J'ai vérifié sur Internet mais n'a pas pu trouver la réponse à ma question. Désolé si c'est quelque part que je n'ai pas trouvé. SO J'ai une vue de sélecteur avec des noms et chaque nom a une valeur. Je voudrais ajouter ces valeurs dans un autre calcul. Voici le code:Comment multiplier le nombre à partir d'un pickerview dans swift

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 

} 

J'ai aussi

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

Et je voudrais ajouter le engourdis affecter à l'élément dans pickerView à ce calcul:

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

Mais ne fonctionne pas

Merci

JC

+2

Il serait utile de modifier la question pour décrire * comment * cela n'a pas fonctionné. Y a-t-il un message d'erreur? Résultat différent de ce que vous attendez? Quel est le problème réel? – Robert

+0

Salut Robert! Merci pour votre réponse – John

+0

Je n'ai pas vraiment décrire à la fin désolé. C'est Total = (couleur * PVpres [0] .num)/item * source et c'est ok. mais si je veux ajouter le calcul avec n'importe quelle ligne sélectionnée j'ai essayé de mettre PVpres [row] .numb mais il y a le message "row d'identificateur non résolu" – John

Répondre

1

Pour obtenir la ligne sélectionnée du sélecteur, vous devez utiliser la méthode selectedRow (inComponent component: Int). Vous devez également vérifier si une ligne est réellement sélectionnée. mais ce code suppose que votre calcul est basé sur un simple index de tableau

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

Merci beaucoup pour votre aide! Cela a fonctionné comme ça. Mais c'est [engourdi] que je veux multiplier non le rang du tableau. Parce que après avoir [("Orange", 7), ("Pink", 10), ("Black", 12)] – John

+0

J'ai édité la réponse. vérifier maintenant –

+1

Great !!! Il a fonctionné parfaitement. Merci beaucoup. problème résolu – John