swiftは素人です。
今日の午前に、ちょっとしたデータ管理アプリの制作にあたって躓いたところを質問させていただきました。
https://teratail.com/questions/194689
セルの中に置いたテキストフィールドとラベルの入力操作について、「UITextFieldDelegateか、notificationを使ってみてはどうか」というアドバイスを受け、それを参考に進めていきました。
そこで、通知を受け取ってfuncを走らせることができたのはいいものの、発生したエラーのために先に進められない状況です。
swift
1class TableviewCell, UITableViewCell, UITextFieldDelegate { 2 3override func awakeFromNib() { 4 super.awakeFromNib() 5 6 NotificationCenter.default.addObserver(self, selector: #selector(self.changeText(sender:)), name: UITextField.textDidEndEditingNotification, ocject: nil) 7 8} 9 10@IBOutlet weak var x: UITextField! 11@IBOutlet weak var y: UITextField! 12@IBOutlet weak var total: UILabel! 13. 14. 15. 16 17func changeText(sender: Notification) { 18 guard let textview = sender.object as? UITextField else { 19 print("失敗") 20 return 21 } if textview != nil { 22 print("一応成功") 23 var Total: Int = Int(total.text!)! 24 var X: Int = Int(x.text!)! 25 var Y: Int = Int(y.text!)! 26 Total = X + Y 27 total.text = "(Total)" 28 } 29} 30func textFieldShouldReturn(_ textField: UITextField) -> Bool { 31 textField.resignFirstResponder() 32 self.endEditing(true) 33 return true 34} 35 36. 37. 38. 39 40} 41
このように書いてシミュレーターを起動し、実際に入力してtotalの値が変わるのかどうかを確かめようとしたところ、入力し終わり、リターンキーを押してキーボードが閉じるタイミングでアプリがクラッシュし、var Totalが書かれた行に以下のようなエラー文が表示されました。
Thread 1: Fattal error: Unexpectedly found nil while implicitly unwrapping an Optional Value
コンソールを見たところ、確かにTotal,X,Yのところは =(int) 0 と表示されており、本来入っている値が入っていませんでした。
試してみたこと
・・・と、言っていいかわかりませんが、変数に入れる前のオブジェクトの中の文字列をprint文で出力してみると、一番上の行以外に入力しても必ず一番上の値になっていました。(一番上に入力した時は値が入力したものに変わっていました。)
func changeText(sender: Notification) { guard let textview = sender.object as? UITextField else { print("失敗") return } if textview != nil { print("一応成功") print(total.text.debugDescription) //必ずOptional("500") print(x.text.debugDescription) //必ずOptional("250") print(y.text.debugDescription) //必ずOptional("250") var Total: Int = Int(total.text!)! var X: Int = Int(x.text!)! var Y: Int = Int(y.text!)! Total = X + Y total.text = "(Total)" } }
拙い質問で恐縮ですが、なんとか突破口を見出したいです。
教えていただけると助かります。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。