質問編集履歴

7

改善

2020/11/30 07:12

投稿

h.h
h.h

スコア8

test CHANGED
File without changes
test CHANGED
@@ -421,5 +421,3 @@
421
421
 
422
422
 
423
423
  ```
424
-
425
- ![イメージ説明](cfc646b2fac7d027b3633b9a18cddd64.png)

6

改善

2020/11/30 07:12

投稿

h.h
h.h

スコア8

test CHANGED
File without changes
test CHANGED
@@ -23,3 +23,403 @@
23
23
  データが少ないうちはいいですが、登録データが増えていくと負荷も比例して増えていくので、
24
24
 
25
25
  検索処理を行うのを画面表示するときだけにしたいのですが、考えられる方法はありますでしょうか?
26
+
27
+
28
+
29
+ ```ここに言語を入力
30
+
31
+ import UIKit
32
+
33
+ import RealmSwift
34
+
35
+
36
+
37
+ class TodoTableViewController: UITableViewController, EditViewControllerDelegate {
38
+
39
+
40
+
41
+ // MARK: - Properties
42
+
43
+
44
+
45
+ let realm = try! Realm()
46
+
47
+
48
+
49
+
50
+
51
+ // MARK: - LifeCycle
52
+
53
+
54
+
55
+ override func viewDidLoad() {
56
+
57
+ super.viewDidLoad()
58
+
59
+ tableView.reloadData()
60
+
61
+ }
62
+
63
+
64
+
65
+ override func viewWillAppear(_ animated: Bool) {
66
+
67
+ super.viewWillAppear(animated)
68
+
69
+ settingView()
70
+
71
+
72
+
73
+
74
+
75
+ }
76
+
77
+
78
+
79
+ func settingView() {
80
+
81
+ //最初から編集ボタンを表示させない
82
+
83
+ tableView.isEditing = false
84
+
85
+ //セルをタップできるようにする
86
+
87
+ tableView.allowsSelectionDuringEditing = true
88
+
89
+ //並び替え、削除ボタンを表示 タイトル名変更 色
90
+
91
+ navigationItem.leftBarButtonItem = editButtonItem
92
+
93
+ navigationItem.leftBarButtonItem?.tintColor = .blue
94
+
95
+ //Realmのパス
96
+
97
+ print(Realm.Configuration.defaultConfiguration.fileURL!)
98
+
99
+ }
100
+
101
+
102
+
103
+
104
+
105
+ // MARK: - Table view data source
106
+
107
+
108
+
109
+ //セクションラベルの数
110
+
111
+ override func numberOfSections(in tableView: UITableView) -> Int {
112
+
113
+ return 1
114
+
115
+ }
116
+
117
+
118
+
119
+ //セルの行数
120
+
121
+ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
122
+
123
+ //Realmをインスタンス化して使えるようにする
124
+
125
+ let realms = realm.objects(Todo.self)
126
+
127
+
128
+
129
+ return realms.count
130
+
131
+ }
132
+
133
+
134
+
135
+ // セルの中身、データを表示する //withIdentifierを設定した名前に合わせる
136
+
137
+ override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
138
+
139
+ let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
140
+
141
+ let realms = realm.objects(Todo.self)
142
+
143
+ let todoArray = realms[indexPath.row]
144
+
145
+ cell.textLabel?.text = todoArray.text
146
+
147
+ cell.selectionStyle = .none
148
+
149
+
150
+
151
+ return cell
152
+
153
+ }
154
+
155
+
156
+
157
+ //セルがタップされた時の処理
158
+
159
+ override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
160
+
161
+ let realms = realm.objects(Todo.self)
162
+
163
+
164
+
165
+ // var nextTextArray = realms[indexPath.row]
166
+
167
+ //タップした時にその配列の番号を取り出して値を渡す
168
+
169
+ let editVC = storyboard?.instantiateViewController(identifier: "EditView") as! EditViewController
170
+
171
+ // editVC.todoString = nextTextArray.text
172
+
173
+ editVC.editTodo = realms[indexPath.row]
174
+
175
+ editVC.indexPath = [indexPath.row]
176
+
177
+ editVC.editDelegate = self
178
+
179
+ navigationController?.pushViewController(editVC, animated: true)
180
+
181
+
182
+
183
+ }
184
+
185
+
186
+
187
+ //セルの並び替え
188
+
189
+ override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
190
+
191
+ }
192
+
193
+
194
+
195
+ //セルを編集できるようにするかどうか設定
196
+
197
+ override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
198
+
199
+ return true
200
+
201
+ }
202
+
203
+
204
+
205
+ //データ削除設定
206
+
207
+ override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
208
+
209
+ if editingStyle == .delete {
210
+
211
+ let realm = try! Realm()
212
+
213
+ let todos = realm.objects(Todo.self)
214
+
215
+ let todo = todos[indexPath.row]
216
+
217
+
218
+
219
+ try! realm.write {
220
+
221
+ realm.delete(todo)
222
+
223
+ }
224
+
225
+ tableView.deleteRows(at: [indexPath], with: .fade)
226
+
227
+ }
228
+
229
+ }
230
+
231
+
232
+
233
+ // MARK: - function
234
+
235
+ func tapEditButton(indexPath: IndexPath) {
236
+
237
+ let todos = realm.objects(Todo.self)
238
+
239
+ tableView.reloadRows(at: [indexPath], with: .left)
240
+
241
+
242
+
243
+ print("呼ばれた")
244
+
245
+
246
+
247
+ }
248
+
249
+
250
+
251
+ // 編集ボタン
252
+
253
+ @IBAction func tapAddButton(_ sender: Any) {
254
+
255
+ let realm = try! Realm()
256
+
257
+ let alertController = UIAlertController(title: "Todoを追加しますか?", message: nil, preferredStyle: .alert)
258
+
259
+ let action = UIAlertAction(title: "追加", style: .default){
260
+
261
+ (void) in
262
+
263
+ let textField = alertController.textFields![0] as UITextField
264
+
265
+
266
+
267
+ if let text = textField.text {
268
+
269
+ let todo = Todo()
270
+
271
+ todo.text = text
272
+
273
+
274
+
275
+ try! realm.write {
276
+
277
+ realm.add(todo)
278
+
279
+ }
280
+
281
+ self.tableView.reloadData()
282
+
283
+ }
284
+
285
+ }
286
+
287
+ let cancel = UIAlertAction(title: "キャンセル", style: .cancel, handler: nil)
288
+
289
+ alertController.addTextField{(textField) in
290
+
291
+ textField.placeholder = "Todoの名前を入れてください。"
292
+
293
+ }
294
+
295
+ alertController.addAction(action)
296
+
297
+ alertController.addAction(cancel)
298
+
299
+
300
+
301
+ present(alertController, animated: true, completion: nil)
302
+
303
+ }
304
+
305
+
306
+
307
+ }
308
+
309
+
310
+
311
+
312
+
313
+ ```
314
+
315
+ ```
316
+
317
+ import UIKit
318
+
319
+ import RealmSwift
320
+
321
+
322
+
323
+ protocol EditViewControllerDelegate {
324
+
325
+ func tapEditButton(indexPath: IndexPath)
326
+
327
+
328
+
329
+ }
330
+
331
+
332
+
333
+
334
+
335
+ class EditViewController: UIViewController {
336
+
337
+
338
+
339
+ // MARK: - Properties
340
+
341
+
342
+
343
+ var editTodo = Todo()
344
+
345
+ var indexPath = IndexPath(row: 0, section: 0)
346
+
347
+ var editDelegate: EditViewControllerDelegate?
348
+
349
+
350
+
351
+ @IBOutlet weak var todoTextField: UITextField!
352
+
353
+
354
+
355
+ // MARK: - LifeCycle
356
+
357
+
358
+
359
+ override func viewDidLoad() {
360
+
361
+ super.viewDidLoad()
362
+
363
+
364
+
365
+ todoTextField.text = editTodo.text
366
+
367
+ // navigationItem.rightBarButtonItem = UIBarButtonItem(title: "更新", style: .plain, target: self, action: #selector(rowUpdata))
368
+
369
+
370
+
371
+ }
372
+
373
+
374
+
375
+ // MARK: - function
376
+
377
+
378
+
379
+ @IBAction func tapEditButton(_ sender: Any) {
380
+
381
+ //タップした時にその配列の番号を取り出して値を渡す
382
+
383
+ let todoVC = storyboard?.instantiateViewController(identifier: "TodoTableView") as! TodoTableViewController
384
+
385
+ let realm = try! Realm()
386
+
387
+ let todos = realm.objects(Todo.self)
388
+
389
+
390
+
391
+
392
+
393
+ try! realm.write {
394
+
395
+ editTodo.text = todoTextField.text!
396
+
397
+
398
+
399
+ }
400
+
401
+
402
+
403
+ editDelegate?.tapEditButton(indexPath: indexPath )
404
+
405
+
406
+
407
+ navigationItem.leftBarButtonItem?.isEnabled = false
408
+
409
+ navigationController?.popViewController(animated: true)
410
+
411
+ }
412
+
413
+
414
+
415
+
416
+
417
+ }
418
+
419
+
420
+
421
+
422
+
423
+ ```
424
+
425
+ ![イメージ説明](cfc646b2fac7d027b3633b9a18cddd64.png)

5

改善

2020/11/27 09:05

投稿

h.h
h.h

スコア8

test CHANGED
File without changes
test CHANGED
@@ -23,7 +23,3 @@
23
23
  データが少ないうちはいいですが、登録データが増えていくと負荷も比例して増えていくので、
24
24
 
25
25
  検索処理を行うのを画面表示するときだけにしたいのですが、考えられる方法はありますでしょうか?
26
-
27
-
28
-
29
- ![イメージ説明](f12827cf35522f8254cd684571263e26.png)

4

誤字

2020/11/25 17:40

投稿

h.h
h.h

スコア8

test CHANGED
File without changes
test CHANGED
@@ -26,6 +26,4 @@
26
26
 
27
27
 
28
28
 
29
- ![イメージ説明](7aa0cd24a98f72dc33e550e8a9bf419f.png)
30
-
31
29
  ![イメージ説明](f12827cf35522f8254cd684571263e26.png)

3

改善

2020/11/25 16:04

投稿

h.h
h.h

スコア8

test CHANGED
@@ -1 +1 @@
1
- 【Swift】Todoアプリ
1
+ 急募【Swift】Todoアプリ
test CHANGED
File without changes

2

改善

2020/11/25 07:19

投稿

h.h
h.h

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ![イメージ説明](f12827cf35522f8254cd684571263e26.png)簡単なTableViewを使用したTodoアプリについて質問です。
1
+ 簡単なTableViewを使用したTodoアプリについて質問です。
2
2
 
3
3
 
4
4
 
@@ -27,3 +27,5 @@
27
27
 
28
28
 
29
29
  ![イメージ説明](7aa0cd24a98f72dc33e550e8a9bf419f.png)
30
+
31
+ ![イメージ説明](f12827cf35522f8254cd684571263e26.png)

1

改善

2020/11/25 06:32

投稿

h.h
h.h

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 簡単なTableViewを使用したTodoアプリについて質問です。
1
+ ![イメージ説明](f12827cf35522f8254cd684571263e26.png)簡単なTableViewを使用したTodoアプリについて質問です。
2
2
 
3
3
 
4
4
 
@@ -12,7 +12,7 @@
12
12
 
13
13
  ここから質問ですが
14
14
 
15
- アプリ内で登録されたTodo内容をnumberOfRowsInSection、cellForRowAt、didSelectRowAt
15
+ アプリ内で登録されたTodo内容の表示をnumberOfRowsInSection、cellForRowAt、didSelectRowAt
16
16
 
17
17
  で都度検索処理を入れているので、
18
18