teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

解決方法の追加

2019/03/07 10:47

投稿

hik_
hik_

スコア42

title CHANGED
File without changes
body CHANGED
@@ -123,6 +123,91 @@
123
123
 
124
124
  }
125
125
  ```
126
+ ### 3/7日 解決
127
+ 以下のコードで解決に至りました。ありがとうございます。
128
+ ```ここに言語を入力
129
+ import UIKit
126
130
 
131
+ class ViewController: UIViewController {
132
+
133
+ @IBOutlet weak var label: UILabel!
134
+
135
+
136
+ override func viewDidLoad() {
137
+ super.viewDidLoad()
138
+
139
+
140
+
141
+ }
142
+
143
+ // ViewControllerを開く度に中の処理が呼ばれる
144
+ override func viewDidAppear(_ animated: Bool) {
145
+ super.viewDidAppear(animated)
146
+
147
+
148
+ // UserDefaultsに保存された数字が無いか確認する
149
+ if let _ = UserDefaults.standard.object(forKey: "textKey") as? String {
150
+ // UserDefaultsに保存されたaTextの値をlabelに表示する
151
+ label.text = (UserDefaults.standard.object(forKey: "textKey") as! String)
152
+ // アプリ再起動後もaddViewControllerで引き続き計算出来るように、labelに表示されている値をUserDefaultsにtext2Keyとして保存する。
153
+ UserDefaults.standard.set(Int(label.text!), forKey: "text2Key")
154
+ }
155
+
156
+
157
+ }
158
+
159
+ }
160
+ ```
161
+
162
+ ```ここに言語を入力
163
+ import UIKit
164
+
165
+ // 初期値を0に設定した変数aTextを作成
166
+ var aText:Int = 0
167
+
168
+
169
+ class addViewController: UIViewController {
170
+
171
+ @IBOutlet weak var textField: UITextField!
172
+
173
+ override func viewDidLoad() {
174
+ super.viewDidLoad()
175
+
176
+ // textFieldの入力方法をナンバーパッドに設定
177
+ textField.keyboardType = UIKeyboardType.numberPad
178
+
179
+
180
+
181
+ }
182
+
183
+ override func viewDidAppear(_ animated: Bool) {
184
+ super.viewDidAppear(animated)
185
+
186
+ // addViewControllerを開く度にViewControllerのviewDidAppearでUserDefaultsで保存したlabelの値がある場合は、aTextに反映させてaddButton内で引き続き計算出来る様にする。
187
+ if let _ = UserDefaults.standard.object(forKey: "text2Key") as? Int {
188
+ aText = (UserDefaults.standard.object(forKey: "text2Key") as! Int)
189
+
190
+ }
191
+
192
+ }
193
+
194
+
195
+
196
+ @IBAction func addButton(_ sender: Any) {
197
+
198
+ // iBにtextFieldに入力された数字を入れる
199
+ guard let iB = Int(textField.text!) else {
200
+ return
201
+ }
202
+ // aTextにiBの数字を入れて、aTextに入れる。
203
+ aText = aText + iB
204
+ // UserDefaultsにaTextの値をtextKeyで保存する
205
+ UserDefaults.standard.set(String(aText), forKey: "textKey")
206
+
207
+
208
+ }
209
+
210
+ }
211
+ ```
127
212
  ### 補足情報(FW/ツールのバージョンなど)
128
213
  Swift4 Xcode10

1

画像の追加

2019/03/07 10:47

投稿

hik_
hik_

スコア42

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
  TextFieldに入力した数字をLabelに加算していく事を作りたく、(1回目TextFieldに100を入力→Labelに100表示、2回目TextFieldに100入力→Labelに1回目の100に2回目の100を足した数、合計200をLabelに表示)
3
3
  合計をLabelに表示する段階は作れたのですが、アプリを再起動しても消えないようにUserDefaultsを使い保存したく作っているのですが、再起動したらLabelにしっかり再起動前の数字がしっかりと表示されたいるのですが、addViewControllerに移動しTextFieldに数字を入力したら、LabelにはUserDefaultsで保存されていた数字に足したいのですが、リセットされていて再起動後のTextFieldに入力された数字だけの表示になってしまいます。
4
4
 
5
-
5
+ ![イメージ説明](75c9df23c3e6b19dac56415d18637481.png)
6
6
  ### 該当のソースコード
7
7
 
8
8
  ```ここに言語名を入力