2016-10-31 1 views
0

私は、学生名と合計点数(1000点以上)を取り、ボタンを押したときにラベルに表示するアプリを作ろうとしています。ディスプレイの式は「x student got y grade」です。何らかの理由で(私は確信していません)私はストーリーボードを接続しており、コードは正しいようです。ラベルには文字列が表示されません。誰かが私のコードを見て、私はラベルに表示するためにその文字列を取得するために何ができるかで私を助けることができれば「Optional(UITextField: 0x7ff6696095550;フレーム=」などなどラベルに文字列を表示しない

- 私は:代わりに、それは私のような何かを与えています本当に感謝しています。

gradeMS = "\(nameGR)..." 

しかし、あなたは、おそらくそれはunwrapedテキストです印刷したい:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var gradeTF: UITextField! 
    @IBOutlet weak var nameGR: UITextField! 
    @IBOutlet var label1 : UILabel! 


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



    @IBAction func submitTapped(_ sender: UIButton) { 

     var gradeMS = "" 

     if (gradeTF.text?.isEmpty)! { 

      gradeMS = "Please enter point total" 

     } 
     else { 
      let grade : Int = Int(gradeTF.text!)! 


      if grade > 1000 { 
       gradeMS = "ERROR - Invalid point total" 
       label1.text = gradeMS 
      } 
      else if grade > 900 && grade <= 1000 { 
       gradeMS = "\(nameGR)'s grade is \"A\"" 
       label1.text = gradeMS 
      } 
      else if grade > 800 && grade <= 900 { 
       gradeMS = "\(nameGR)'s grade is \"B\"" 
       label1.text = gradeMS 
      } 
      else if grade > 700 && grade <= 800 { 
       gradeMS = "\(nameGR)'s grade is \"C\"" 
       label1.text = gradeMS 
      } 
      else if grade > 600 && grade <= 700 { 
       gradeMS = "\(nameGR)'s grade is \"D\"" 
       label1.text = gradeMS 
      } 
      else { 
       gradeMS = "\(nameGR)'s grade is \"F\"" 
       label1.text = gradeMS 
      } 
      } 


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


    } 

} 
+0

これは、 'UITextField'オブジェクトが' string'の代わりに 'gradeMS'に挿入されているためです。 – Adeel

+0

ラベルに表示されています。私のコードが正しく表示されるようにコードや編集を私に提案できますか?私は迅速かつ自己教えに新しいです。だから私は何が間違っているのか100%確信していない。 – cisco21

+0

@Adeel、これを解決するコードはどのように見えますか?あなたが気にしないのなら? – cisco21

答えて

0

textFieldの代わりにnameGR textFieldの中のテキストを使用する必要があります。

あなたsubmitTapped IBActionでどこでも

gradeMS = "\(nameGR.text!)'s grade is \"A\"" 

gradeMS = "\(nameGR)'s grade is \"A\"" 

を交換してください。

@IBAction func submitTapped(_ sender: UIButton) { 

    var gradeMS = "" 
    let name = nameGR.text 

    if (gradeTF.text?.isEmpty)! { 

     gradeMS = "Please enter point total" 

    } 
    else { 
     let grade : Int = Int(gradeTF.text!)! 


     if grade > 1000 { 
      gradeMS = "ERROR - Invalid point total" 
      label1.text = gradeMS 
     } 
     else if grade > 900 && grade <= 1000 { 
      gradeMS = name! + "'s grade is \"A\"" 
      label1.text = gradeMS 
     } 
     else if grade > 800 && grade <= 900 { 
      gradeMS = name! + "'s grade is \"B\"" 
      label1.text = gradeMS 
     } 
     else if grade > 700 && grade <= 800 { 
      gradeMS = name! + "'s grade is \"C\"" 
      label1.text = gradeMS 
     } 
     else if grade > 600 && grade <= 700 { 
      gradeMS = name! + "'s grade is \"D\"" 
      label1.text = gradeMS 
     } 
     else { 
      gradeMS = name! + "'s grade is \"F\"" 
      label1.text = gradeMS 
     } 
    } 
} 
+0

何かの手掛かりがなぜ今のラベルの文字列に「オプション」と言うのですか? – cisco21

+0

ごめんなさいわかりません。 – Adeel

+0

ボタンをクリックすると、ラベルに表示される文字列は次のようになります。 オプション( "danny")のグレードは "F" dannyは名前フィールドに使用された名前で、グレードはa 0なので、それはFです。なぜオプションがあるのか​​、なぜdannyが括弧内にあるのだろうと思っています。 – cisco21

0

あなたが印刷されているがnameGRという名前UITextField

guard let name = nameGR.text! else { 
    print("Uups. We might want to handle empty textfield here") 
} 

gradeMS = "\(name)'s grade is \"C\"" 

コンプリート方法:

@IBAction func submitTapped(_ sender: UIButton) { 

    var gradeMS = "" 

    if (gradeTF.text?.isEmpty)! { 

     gradeMS = "Please enter point total" 

    } 
    else { 
     let grade : Int = Int(gradeTF.text!)! 

     guard let name = nameGR.text! else { 
      print("Uups. We might want to handle empty textfield here") 
      return 
     } 

     if grade > 1000 { 
      gradeMS = "ERROR - Invalid point total" 
      label1.text = gradeMS 
     } 
     else if grade > 900 && grade <= 1000 { 
      gradeMS = "\(name)'s grade is \"A\"" 
      label1.text = gradeMS 
     } 
     else if grade > 800 && grade <= 900 { 
      gradeMS = "\(name)'s grade is \"B\"" 
      label1.text = gradeMS 
     } 
     else if grade > 700 && grade <= 800 { 
      gradeMS = "\(name)'s grade is \"C\"" 
      label1.text = gradeMS 
     } 
     else if grade > 600 && grade <= 700 { 
      gradeMS = "\(name)'s grade is \"D\"" 
      label1.text = gradeMS 
     } 
     else { 
      gradeMS = "\(name)'s grade is \"F\"" 
      label1.text = gradeMS 
     } 
    } 
} 
+0

ありがとうございました!働いているようだ。 "オプション(" Danny ")の成績は" A "" – cisco21

+0

私はUILabel.textがオプションであることに気づいていませんでした。ごめんなさい。私は答えを更新しました。 – shallowThought

関連する問題