2017-07-15 5 views
1

私は約1週間半速く自分自身を教えています。私はインチからセンチメートルに行くコンバータを作ろうとしています。私は2つのテキストフィールドを持っています.1つはインチでパンチ、もうひとつはセンチメートルです。あなたがそれらの1つをタイプすると、計算がヒットし、それはあなたにインチまたはセンチメートルの変換を与えます。私が取り組んでいる問題は、あなたが入力して、あなたがむしろ他の測定単位を見ると決めた場合、数字はまだ入力されており、ボタンは実際には機能しません。ユーザーが代わりに他のフィールドを使用することを決定した場合、どのようにテキストフィールドをクリアにすることができますか?2番目のテキストフィールドに入力するときに2番目のテキストフィールドをクリアするスウィフトコード

アップロードしているコードで可能かどうかもわかりませんでしたが、私は変換ボタンを一括して取り除きたいので、ユーザーがユニットに入力するか、もう片方がすぐにラベルを埋めます以下。これは可能ですか?

ここまでのコードです。あなたが何をしたいか

import UIKit 

class ViewController: UIViewController, UITextViewDelegate{ 

    @IBOutlet weak var InchesField: UITextField! 
    @IBOutlet weak var CentimetersField: UITextField! 
    @IBOutlet weak var ConversionLabel: UILabel! 

    //Only let 1 decimal point 
    let numberFormatter: NumberFormatter = { 
     let nf = NumberFormatter() 
     nf.numberStyle = .decimal 
     nf.minimumFractionDigits = 0 
     nf.maximumFractionDigits = 1 
     return nf 
    }() 

    @IBAction func ConversionButton1(_ sender: AnyObject) { 

    if InchesField.text == "" || CentimetersField.text == "" { 
     //either inchfield or centimetersfield text is empty 
     ConversionLabel.text = String("Please enter a number") 
    } 

    if let text = InchesField.text, !text.isEmpty 
     { 
      //do something if it's not empty 
      let inch = Double(InchesField.text!) 
      let inCmConvertor = inch! * 2.54 

      ConversionLabel.text = String("\(inCmConvertor) Centimters") 
    } else 
    if let text = CentimetersField.text, !text.isEmpty 
    { 
      let centimeter = Double(CentimetersField.text!) 
      let cmInConvertor = centimeter!/2.54 

     ConversionLabel.text = String("\(cmInConvertor) Inches") 
    } 

    } 
} 

Heres a screenshot

答えて

1

はIBActionの作成ウィンドウでイベントを変更編集して、各テキストフィールドのIBActionを作成しています。

私は以下のコードをテストし、それが働いた:

@IBOutlet weak var InchesField: UITextField! 
@IBOutlet weak var CentimetersField: UITextField! 

@IBAction func InchesFieldChanged(_ sender: Any) { 
CentimetersField.text = "" 
} 

@IBAction func CentimetersFieldChanged(_ sender: Any) { 
    InchesField.text = "" 
} 

がちょうど手動IBActionsを作成し、コードをコピーして貼り付けないでください、それははるかに簡単になります。

SwiftプログラミングとiOS開発への旅に恵まれました。

+0

お返事ありがとうございます。私はストーリーボードからコントローラにドラッグし、上記のようにアクションfuncを作ったが、終了するとエラーが発生する 'string'型の値を 'UITextField'型に割り当てることができない –

+0

Nevermind私はthe.textの部分を見逃していました。 –

+0

文字を取り除きたいのですが。誰かが誤ってキャラクターに当ると、プログラムがクラッシュします。私はそれがNSRangeまたはそれらの行に沿った何かと関係があることを知っています –

関連する問題