2014-07-20 2 views
0

Je rencontre un problème avec la ligne sélectionnée dans le composant J'ai une vue sélecteur avec 2 composants et 5 lignes que je veux pour convertir les unités. le problème est quand j'essaye de faire défiler vers le bas les déclarations de commutateur ne fonctionnent pas. Le seul qui fonctionne est le second var. Si j'essaie Hectare -> carré Pouces il le convertit bien mais si j'essaye Acre -> pouce carré il me donne la même réponse que l'hectare -> carré Pouce. Aussi quand j'ajoute essayer d'ajouter un autre selectedRowInComponent (2) l'application se bloque.J'ai des problèmes avec la fonction selectedrowincomponenet dans swift

Acre     Acre 
Hectare     Hectare 
Square Inch    Square Inch  
Square Meter   Square Meter 
Square Kilometer  Square Kilometer 
Square Foot    Square Foot 

C'est le code que je utilise

var one: NSInteger = onlyPicker.selectedRowInComponent(0) 
    var second: NSInteger = onlyPicker.selectedRowInComponent(1) 



     switch (one) { 



     case 0: 

      answerField2.text = answerField1.text 




     case 1: 



      var num1 = (answerField1.text as NSString).floatValue 

      var num2:Float = 2.4711 

      var answer = num1/num2 

      var display = answer.description 

      answerField2.text = display 



     case 2: 



      var num1 = (answerField1.text as NSString).floatValue 

      var num2:Float = 6272600 

      var answer = num1 * num2 

      var display = answer.description 

      answerField2.text = display 




     case 3: 

      var num1 = (answerField1.text as NSString).floatValue 

      var num2:Float = 0.00023711 

      var answer = num1/num2 

      var display = answer.description 

      answerField2.text = display 

     case 4: 

      var num1 = (answerField1.text as NSString).floatValue 

      var num2:Float = 247.11 

      var answer = num1/num2 

      var display = answer.description 

      answerField2.text = display 




     case 5: 

      var num1 = (answerField1.text as NSString).floatValue 

      var num2:Float = 43560 

      var answer = num1 * num2 

      var display = answer.description 

      answerField2.text = display 




     default: 

      println("not a value") 



     } 
     switch (second) { 

     case 0: 




      var num1 = (answerField1.text as NSString).floatValue 

      var num2:Float = 2.4711 

      var answer = num1 * num2 

      var display = answer.description 

      answerField2.text = display 



     case 1: 



      answerField2.text = answerField1.text 




     case 2: 



      var num1 = (answerField1.text as NSString).floatValue 

      var num2:Float = 15500000 

      var answer = num1/num2 

      var display = answer.description 

      answerField2.text = display 


     case 3: 

      var num1 = (answerField1.text as NSString).floatValue 

      var num2:Float = 0.00010000 

      var answer = num1/num2 

      var display = answer.description 

      answerField2.text = display 



     case 4: 

      var num1 = (answerField1.text as NSString).floatValue 

      var num2:Float = 100 

      var answer = num1/num2 

      var display = answer.description 

      answerField2.text = display 





     case 5: 

      var num1 = (answerField1.text as NSString).floatValue 

      var num2:Float = 107640 

      var answer = num1 * num2 

      var display = answer.description 

      answerField2.text = display 


     default: 

      println("not a value") 






     } 

    } 

    } 

Répondre

0

Sur la question de plantage si elle est sur le code s'écraser comme ça, alors s'il vous plaît vérifier la propriété numberOfComponents sur votre UIPicker. Si c'est réglé à 2 - alors que ce serait le problème. Dans les calculs, le fait de factoriser de nouveau le code comme suit éliminera les instructions de commutation. La variable de conversions est un tableau de tableau de type Float (utilisant le nouveau style Swift - à partir de Xcode 6 Beta 3).

J'ai énuméré les noms des valeurs de conversion pour illustrer comment installer/remplir le tableau. Ceux-ci devraient être remplacés par une valeur Float.

var conversions: [[Float]] = [ [acre-to-acre,acre-to-hectace,acre-to-square-inch,....], 
           [hectacre-to-acre,hectacre-tohectacre,hectacre-to-square-inch,...], 
           [square-inch-to-acre,square-inch-to-hectacre,...] 
           .... 
          ] 


var one: NSInteger = onlyPicker.selectedRowInComponent(0) 
var second: NSInteger = onlyPicker.selectedRowInComponent(1) 

var num1 = (answerField1.text as NSString).floatValue 

var conversionFactor:Float = conversions[one][two] 

var answer = num1 * conversionFactor 

var display = answer.description 

answerField2.text = display 
+0

certaines des conversions exigent la division que ferais-je dans ce cas – sky1995

+0

Vous pouvez définir votre facteur de conversion 1/ConversionFactor, puis multipliez ce résultat. – kurtn718