2016-10-15 13 views
1

私はちょうどスウィフトで始まり、チップ計算機を作りたがっています。しかし、私はいくつかの問題を抱えており、誰かが私を正しい方向に向けることを望んでいました。 getBillAmt関数では、私の合計は更新/表示されていません。表示されるのはbillAmtです。更新するためにいくつかのオプションを試しましたが、取得できません。私の最近の試みは以下の通りです。ヒント電卓 - スウィフト

私の以前の試みでは、私の問題でIntをFloatに変換できませんでした。

変数、ユーザがチップ量にスライド可能

var tipPercentAmt = Int()

var billAmt = Float() //bill before tip

var total = Float()

スライダ(intとして)

@IBAction func tipAmtVal(sender: UISlider) { 
    let tipPercentAmt = Int(sender.value) 
} 

そして、取得法案amou NTユーザーから、テキストフィールドから(フロートなど)と、ラベル

@IBAction func getBillAmt(sender: UITextField) { 
    let billAmt = Float(billAmtText.text!) 
    let total = billAmt! + (Float(tipPercentAmt/100) 
    tipAmtLabel.text = "\(total)" 
} 

//cause labels to update when user hits return 
func textFieldShouldReturn(textField: UITextField) -> Bool { 
    textField.resignFirstResponder() 
    return true 
} 
+0

'getBillAmt'関数をトリガーすると思われるものは何ですか? – rmaddy

+0

目の前に - スウィフトのオプションを止めて学ぶ必要があります。あなたが使用しているそれらの '! 'のすべてがあなたのアプリをクラッシュさせるだけです。 – rmaddy

+0

ユーザーが戻るボタンを押すと、申し訳ありませんが質問に追加するのを忘れてしまいました。 –

答えて

1

ナッシングで合計を表示することにヒントを追加すると、実際にあなたのgetBillAmt関数を呼び出すための設定です。テキストフィールドがデリゲートで適切に設定されていると仮定すると、textFieldShouldReturn関数が呼び出され、それだけです。

getBillAmountに電話する必要があります。

func getBillAmt(textField: UITextField) { 
    if let text = textField.text { 
     if let billAmt = Float(text) { 
      let total = billAmt + (Float(tipPercentAmt/100) 
      tipAmtLabel.text = "\(total)" 
     } 
    } 
} 

//cause labels to update when user hits return 
func textFieldShouldReturn(textField: UITextField) -> Bool { 
    textField.resignFirstResponder() 

    getBillAmt(textField: textField) 

    return false 
} 

ご覧のとおり、私は他の修正も行っています。

+0

'let total = billAmt'の行で、オプションのFloat型の値を取得しましたか?アンラップされていない。あなたは使用するつもりでした!または?これは私が以前に取得していたのと同じエラーです。 –

+0

テキストに実際に有効な数字が含まれていない場合、stringからfloatへの変換が失敗する可能性があるため、2番目の 'if 'が必要です。私の更新を参照してください。 – rmaddy

+0

ああ!はい!ありがとうございました! –