質問編集履歴

2

アドバイスを参考に修正しました。

2020/07/24 04:01

投稿

uma02
uma02

スコア18

test CHANGED
File without changes
test CHANGED
@@ -213,3 +213,93 @@
213
213
 
214
214
 
215
215
  というコードを付け足してみましたがダメでした。
216
+
217
+
218
+
219
+ ###追記
220
+
221
+ 直前に入力された値を削除する際にuserdefaultsを削除するのではなく、引き算を使うように修正しました。
222
+
223
+ ```ここに言語を入力
224
+
225
+ //ViewController
226
+
227
+
228
+
229
+ import UIKit
230
+
231
+
232
+
233
+ class addViewController: UIViewController {
234
+
235
+
236
+
237
+ @IBOutlet weak var label: UILabel!
238
+
239
+
240
+
241
+
242
+
243
+ override func viewDidLoad() {
244
+
245
+ super.viewDidLoad()
246
+
247
+ }
248
+
249
+
250
+
251
+ // ViewControllerを開く度に中の処理が呼ばれる
252
+
253
+ override func viewDidAppear(_ animated: Bool) {
254
+
255
+ super.viewDidAppear(animated)
256
+
257
+
258
+
259
+
260
+
261
+ // UserDefaultsに保存された数字が無いか確認する
262
+
263
+ if let _ = UserDefaults.standard.object(forKey: "textKey") as? String {
264
+
265
+
266
+
267
+ // UserDefaultsに保存されたaTextの値をlabelに表示する
268
+
269
+ label.text = (UserDefaults.standard.object(forKey: "textKey") as! String)
270
+
271
+
272
+
273
+ //アプリ再起動後もaddViewControllerで引き続き計算出来るように、labelに表示されている値をUserDefaultsにtext2Keyとして保存する。
274
+
275
+ UserDefaults.standard.set(Int(label.text!), forKey: "text2Key")
276
+
277
+ }
278
+
279
+ }
280
+
281
+ @IBAction func torikesi(_ sender: Any) {
282
+
283
+ guard let iB = Int(textField.text!) else {
284
+
285
+ return
286
+
287
+ }
288
+
289
+ // aTextにiBの数字を入れて、aTextに入れる。
290
+
291
+ aText = aText - iB
292
+
293
+ // UserDefaultsにaTextの値をtextKeyで保存する
294
+
295
+ UserDefaults.standard.set(String(aText), forKey: "textKey")
296
+
297
+ }
298
+
299
+ }
300
+
301
+ ```
302
+
303
+ ###エラー
304
+
305
+ 「guard let iB = Int(textField.text!) else {」のところで「Use of unresolved identifier 'textField'」というエラーが出ました。

1

画像の追加と、コードの見やすさを改善しました。

2020/07/24 04:01

投稿

uma02
uma02

スコア18

test CHANGED
File without changes
test CHANGED
@@ -10,15 +10,17 @@
10
10
 
11
11
 
12
12
 
13
-
13
+ 写真の左側がViewController,右側がaddViewControllerです。
14
+
14
-
15
+ add![イメージ説明](4683f51bc2e6521a514462347c318d43.png)
16
+
17
+
18
+
19
+
20
+
15
-
21
+ ```ここに言語を入力
16
-
17
-
18
-
19
-
20
-
22
+
21
- ### ViewController
23
+ ViewController
22
24
 
23
25
 
24
26
 
@@ -26,25 +28,111 @@
26
28
 
27
29
 
28
30
 
31
+ class addViewController: UIViewController {
32
+
33
+
34
+
35
+ @IBOutlet weak var label: UILabel!
36
+
37
+
38
+
39
+
40
+
41
+ override func viewDidLoad() {
42
+
43
+ super.viewDidLoad()
44
+
45
+ }
46
+
47
+
48
+
49
+ // ViewControllerを開く度に中の処理が呼ばれる
50
+
51
+ override func viewDidAppear(_ animated: Bool) {
52
+
53
+ super.viewDidAppear(animated)
54
+
55
+
56
+
57
+
58
+
59
+ // UserDefaultsに保存された数字が無いか確認する
60
+
61
+ if let _ = UserDefaults.standard.object(forKey: "textKey") as? String {
62
+
63
+
64
+
65
+ // UserDefaultsに保存されたaTextの値をlabelに表示する
66
+
67
+ label.text = (UserDefaults.standard.object(forKey: "textKey") as! String)
68
+
69
+
70
+
71
+ //アプリ再起動後もaddViewControllerで引き続き計算出来るように、labelに表示されている値をUserDefaultsにtext2Keyとして保存する。
72
+
73
+ UserDefaults.standard.set(Int(label.text!), forKey: "text2Key")
74
+
75
+ }
76
+
77
+ }
78
+
79
+ @IBAction func torikesi(_ sender: Any) {
80
+
81
+ UserDefaults.standard.removeObject(forKey: "textKey")
82
+
83
+ }
84
+
85
+ }
86
+
87
+
88
+
89
+
90
+
91
+ ```
92
+
93
+ ```
94
+
95
+ ViewController
96
+
97
+ import UIKit
98
+
99
+
100
+
101
+ // 初期値を0に設定した変数aTextを作成
102
+
103
+ var aText:Int = 0
104
+
105
+
106
+
107
+
108
+
29
109
  class ViewController: UIViewController {
30
110
 
31
111
 
32
112
 
33
113
  @IBOutlet weak var label: UILabel!
34
114
 
35
-
36
-
37
115
 
38
116
 
117
+ @IBOutlet weak var textField: UITextField!
118
+
119
+
120
+
39
121
  override func viewDidLoad() {
40
122
 
41
123
  super.viewDidLoad()
42
124
 
125
+
126
+
127
+ // textFieldの入力方法をナンバーパッドに設定
128
+
129
+ textField.keyboardType = UIKeyboardType.numberPad
130
+
131
+
132
+
43
- }
133
+ }
44
-
45
-
46
-
47
- // ViewControllerを開く度に中の処理が呼ばれる
134
+
135
+
48
136
 
49
137
  override func viewDidAppear(_ animated: Bool) {
50
138
 
@@ -52,141 +140,61 @@
52
140
 
53
141
 
54
142
 
55
-
143
+ let rgba = UIColor(red: 50/255.0, green: 150/255.0, blue: 1.0, alpha: 1.0)//rgbaを定義
144
+
56
-
145
+ label.backgroundColor = rgba // 背景色
146
+
57
- // UserDefaultsに保存された数が無いか確認する
147
+ label.textColor = UIColor.white // 文
148
+
58
-
149
+ label.layer.cornerRadius = 10.0 // 角丸のサイズ
150
+
151
+ label.clipsToBounds = true // labelの時は必須(角丸)
152
+
153
+
154
+
155
+ label.layer.borderWidth = 0.0 // 枠線の幅(0なので表示なし)
156
+
157
+ label.layer.borderColor = UIColor.white.cgColor // 枠線の色
158
+
159
+
160
+
161
+ // addViewControllerを開く度にViewControllerのviewDidAppearでUserDefaultsで保存したlabelの値がある場合は、aTextに反映させてaddButton内で引き続き計算出来る様にする。
162
+
59
- if let _ = UserDefaults.standard.object(forKey: "textKey") as? String {
163
+ if let _ = UserDefaults.standard.object(forKey: "text2Key") as? Int {
60
-
61
-
62
-
63
- // UserDefaultsに保存されたaTextの値をlabelに表示する
164
+
64
-
65
- label.text = (UserDefaults.standard.object(forKey: "textKey") as! String)
165
+ aText = (UserDefaults.standard.object(forKey: "text2Key") as! Int)
66
-
67
-
68
-
69
- //アプリ再起動後もaddViewControllerで引き続き計算出来るように、labelに表示されている値をUserDefaultsにtext2Keyとして保存する。
70
-
71
- UserDefaults.standard.set(Int(label.text!), forKey: "text2Key")
72
166
 
73
167
  }
74
168
 
75
169
  }
76
170
 
171
+
172
+
77
- @IBAction func torikesi(_ sender: Any) {
173
+ @IBAction func addButton(_ sender: Any) {
174
+
175
+
176
+
78
-
177
+ // iBにtextFieldに入力された数字を入れる
178
+
179
+ guard let iB = Int(textField.text!) else {
180
+
181
+ return
182
+
183
+ }
184
+
185
+ // aTextにiBの数字を入れて、aTextに入れる。
186
+
187
+ aText = aText + iB
188
+
189
+ // UserDefaultsにaTextの値をtextKeyで保存する
190
+
79
- UserDefaults.standard.removeObject(forKey: "textKey")
191
+ UserDefaults.standard.set(String(aText), forKey: "textKey")
80
192
 
81
193
  }
82
194
 
83
195
  }
84
196
 
85
-
86
-
87
-
88
-
89
- ### addViewController
90
-
91
- import UIKit
92
-
93
-
94
-
95
- // 初期値を0に設定した変数aTextを作成
96
-
97
- var aText:Int = 0
98
-
99
-
100
-
101
-
102
-
103
- class addViewController: UIViewController {
104
-
105
-
106
-
107
- @IBOutlet weak var label: UILabel!
108
-
109
-
110
-
111
- @IBOutlet weak var textField: UITextField!
112
-
113
-
114
-
115
- override func viewDidLoad() {
116
-
117
- super.viewDidLoad()
118
-
119
-
120
-
121
- // textFieldの入力方法をナンバーパッドに設定
122
-
123
- textField.keyboardType = UIKeyboardType.numberPad
124
-
125
-
126
-
127
- }
128
-
129
-
130
-
131
- override func viewDidAppear(_ animated: Bool) {
132
-
133
- super.viewDidAppear(animated)
134
-
135
-
136
-
137
- let rgba = UIColor(red: 50/255.0, green: 150/255.0, blue: 1.0, alpha: 1.0)//rgbaを定義
138
-
139
- label.backgroundColor = rgba // 背景色
140
-
141
- label.textColor = UIColor.white // 文字色
142
-
143
- label.layer.cornerRadius = 10.0 // 角丸のサイズ
144
-
145
- label.clipsToBounds = true // labelの時は必須(角丸)
146
-
147
-
148
-
149
- label.layer.borderWidth = 0.0 // 枠線の幅(0なので表示なし)
150
-
151
- label.layer.borderColor = UIColor.white.cgColor // 枠線の色
152
-
153
-
154
-
155
- // addViewControllerを開く度にViewControllerのviewDidAppearでUserDefaultsで保存したlabelの値がある場合は、aTextに反映させてaddButton内で引き続き計算出来る様にする。
156
-
157
- if let _ = UserDefaults.standard.object(forKey: "text2Key") as? Int {
158
-
159
- aText = (UserDefaults.standard.object(forKey: "text2Key") as! Int)
160
-
161
- }
162
-
163
- }
164
-
165
-
166
-
167
- @IBAction func addButton(_ sender: Any) {
168
-
169
-
170
-
171
- // iBにtextFieldに入力された数字を入れる
172
-
173
- guard let iB = Int(textField.text!) else {
174
-
175
- return
197
+ ```
176
-
177
- }
178
-
179
- // aTextにiBの数字を入れて、aTextに入れる。
180
-
181
- aText = aText + iB
182
-
183
- // UserDefaultsにaTextの値をtextKeyで保存する
184
-
185
- UserDefaults.standard.set(String(aText), forKey: "textKey")
186
-
187
- }
188
-
189
- }
190
198
 
191
199
 
192
200