2015-11-19 17 views
6

Swift'de int ile dizgiyi nasıl dönüştürebilir ve sonuçları tersine çevirebilirim?

Program, F TO C'yi değiştirip tersine çevirmeyi düşünmektedir. Geçiş tuşu ile açık ve kapalı arasında değişir ve C ile f arasında olduğunu varsayar ve kapatır ve c'ye metin alanına # girer. Gönder düğmesini tıklattığınızda, metin alanında neleri bir algoritmaya önceden aktarır ve metin alanında görüntüler.

Dönüşümün doğru gittiğine inanıyorum ancak gerçek sonucu göstermeyeceğim. Ya da dönüştürülme şekli yanlış.

@IBOutlet weak var buttonClicked: UIButton! 
@IBOutlet weak var mySwitch: UISwitch! 
@IBOutlet weak var myTextField: UITextField! 

@IBOutlet weak var User: UITextField! 



func stateChanged(switchState: UISwitch) { 
    if switchState.on { 
     myTextField.text = "Convert to Celius" 
    } else { 
     myTextField.text = "Convert to Farheniet" 
    } 
} 

@IBAction func buttonClicked(sender: UIButton) { 
    if mySwitch.on { 
     var a:Double? = Double(User.text!) 
     a = a! * 9.5 + 32 
     User.text=String(a) 


     mySwitch.setOn(false, animated:true) 
    } else { 
     var a:Double? = Double(User.text!) 
     a = a! * 9.5 + 32 
     User.text=String(a) 

     mySwitch.setOn(true, animated:true) 
    } 

} 
+1

İlk sorun, doğru konumun, anahtar konumu ne olursa olsun, F'yi C'ye dönüştürdüğünü görüyorum. Sorununuz için daha fazla var mıydı? – Tyrelidrel

+0

Gördüğüm şey, her iki durumda da dönüşüm işlevinin yanlış olduğudur. C = (F - 32) * 5/9 ve F = (C * 9/5) + 32 olmalıdır. –

cevap

4

XCode'un eski bir sürümünü kullanıyorum (6.4), bu nedenle kodum sizinkilerden biraz farklı olacak. İşlev düğmenizi anladığımdan düğmemedeyken, AnyIBetton'un UIButton'un önerisini alması gerekir. Ayrıca, kodunuzda bulunan stateChanged işlevini de çağırmazsınız. Aşağıdaki kod, yapmaya çalıştığınız şeyi başarmanıza yardımcı olacaktır.

@IBOutlet weak var mySwitch: UISwitch! 
@IBOutlet weak var myTextField: UITextField! 

@IBOutlet weak var User: UITextField! 



override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    // sets the textfield to the intended conversion on load. 
    if mySwitch.on { 
     myTextField.text = "Convert to Celius" 
    } 
    else { 
     myTextField.text = "Convert to Farheniet" 
    } 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

// changes the myTextFiled text to the intended conversion when the switch is manually switched on or off 
@IBAction func switched(sender: AnyObject) { 
    if mySwitch.on { 
     myTextField.text = "Convert to Celsius" 
    } 
    else { 
     myTextField.text = "Convert to Fahrenheit" 
    } 
} 
// changes the myTextField text to intended reverse conversion after the buttonClicked func is completed. 
func stateChanged(switchState: UISwitch) { 
if switchState.on { 
    myTextField.text = "Convert to Celsius" 
} 
else { 
    myTextField.text = "Convert to Fahrenheit" 
    } 
} 

// do the intended conversion(old version of XCode 6.4) 
@IBAction func buttonClicked(sender: AnyObject) { 
    if mySwitch.on { 
     var a = (User.text! as NSString).doubleValue 
     a = (a-32)*(5/9) 
     User.text="\(a)" 
     mySwitch.setOn(false, animated:true) 
     stateChanged(mySwitch) 
    } 
    else { 
     var a = (User.text! as NSString).doubleValue 
     a = a * (9/5) + 32 
     User.text="\(a)" 
     mySwitch.setOn(true, animated:true) 
     stateChanged(mySwitch) 
    } 
} 
İlgili konular