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

質問編集履歴

2

2020/02/06 12:17

投稿

sakky_tom
sakky_tom

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,16 +1,10 @@
1
- 1. 質問の概要
2
- e.g.現在個人アプリを制作しており、育児状況を記録するため、その一画面をUITableViewで実装しております。具体的には、画面上部に表示された日付ごとにUITableViewCellに表示された内容をRealmを用いて記録、セルに表示したいです。
1
+ 現在個人アプリを制作しており、育児状況を記録するため、その一画面をUITableViewで実装しております。具体的には、画面上部に表示された日付ごとにUITableViewCellに表示された内容をRealmを用いて記録、セルに表示したいです。
3
2
  日付を切り替えるとセルの内容も書き換えられるような形にしたいです。
3
+ 参考にした記事URL: https://qiita.com/yanashi222/items/121b549852bedf391377- Realm公式サイトを参考
4
4
 
5
- 2. 前提となる情報
6
- e.g.- 参考にした記事URL: https://qiita.com/yanashi222/items/121b549852bedf391377- Realm公式サイトを参考
7
-
8
-
9
- 3. 期待する挙動
10
- e.g.- 表示された日付ごとにセルの内容を表示したい。具体的には、表示日付が変更されたら、それに伴ってセルの内容を書き換られるようにしたい。
5
+ 表示された日付ごとにセルの内容を表示したい。具体的には、表示日付が変更されたら、それに伴ってセルの内容を書き換られるようにしたい。
11
-
12
- 4. 発生したエラーや意図しない挙動の説明
6
+ 発生したエラーや意図しない挙動の説明
13
- e.g.- 前日ボタンやcellForRowAtに以下のコードを記載して試して見ましたが、日付が変更されても、セルの内容は変わりませんでした。
7
+ 前日ボタンやcellForRowAtに以下のコードを記載して試して見ましたが、日付が変更されても、セルの内容は変わりませんでした。
14
8
  ```swift
15
9
 
16
10
  こちらです!
@@ -86,7 +80,5 @@
86
80
  5. デバッグ内容と自身の考察
87
81
  e.g.- Realmのfilterで、表示されている日付と同じだったら、それに対応したセルの内容を取り出せばいいのではと考え上記の通り実行しました。
88
82
  表示している日付date(string)にprimary keyを指定して実装しましたがうまくいきません。
89
-
90
- 6. 求める回答(必須項目)
91
- e.g.- 日付に紐づいたUITableViewCellを表示をさせる場合、‘tableView(_: cellForRowAt)’または、前日ボタンに記載するという実装方針は合っているか、
83
+ 日付に紐づいたUITableViewCellを表示をさせる場合、‘tableView(_: cellForRowAt)’または、前日ボタンに記載するという実装方針は合っているか、
92
84
  どちらもも違っているのであれば、どのような実装方針がよいのかアドバイス頂きたいです。

1

2020/02/06 12:17

投稿

sakky_tom
sakky_tom

スコア7

title CHANGED
File without changes
body CHANGED
@@ -13,28 +13,74 @@
13
13
  e.g.- 前日ボタンやcellForRowAtに以下のコードを記載して試して見ましたが、日付が変更されても、セルの内容は変わりませんでした。
14
14
  ```swift
15
15
 
16
+ こちらです!
17
+ //セル数宣言
18
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
19
+
20
+ let realm = try! Realm()
21
+ return todoItems.count
22
+ }
23
+
24
+ //セル表示
25
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
26
+ let cell = tableView.dequeueReusableCell(withIdentifier: "RecordCell", for: indexPath) as! TableViewCell
27
+
28
+ let realm = try! Realm()
29
+ let object = todoItems[indexPath.row]
30
+ cell.bindData(text: object.title, label: object.nowTime, image: object.buttonImage!)
16
- let record = Record(
31
+ let record = Record()
17
32
 
18
- let realm = try! Realm()
33
+ var result = realm.objects(Record.self)
19
34
 
20
- var result = realm.objects(Record.self)
35
+ result = result.filter("date = '(labelToday.title)'")
21
36
 
22
- result = result.filter("date = '(labelToday.title)'")
37
+ for rd in result {
23
38
 
24
- for rd in result {
39
+ if rd.date == labelToday.title {
25
40
 
26
- if rd.date == labelToday.title {
41
+ record.title = rd.title
27
42
 
28
- record.title = rd.title
43
+ record.nowTime = rd.nowTime
29
44
 
30
- record.nowTime = rd.nowTime
45
+ record.buttonImage = rd.buttonImage
31
46
 
47
+ }
48
+ }
32
- record.buttonImage = rd.buttonImage
49
+ return cell
50
+ }
51
+
33
52
 
53
+ func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
54
+ return true
34
- }
55
+ }
35
56
 
36
- })
37
57
 
58
+ func tableView(_ tableView: UITableView,commit editingStyle: UITableViewCell.EditingStyle,forRowAt indexPath: IndexPath) {
59
+ if editingStyle == .delete{
60
+ if let object = todoItems?[indexPath.row] {
61
+ tableView.reloadData()
62
+ let realm = try! Realm()
63
+ try! realm.write{
64
+ realm.delete(object)
65
+ }
66
+ tableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.automatic)
67
+ }
68
+ }
69
+ }
70
+
71
+ func scrollViewDidScroll(_ scrollView: UIScrollView) {
72
+ return
73
+ }
74
+
75
+
76
+ func deleteTodo(Index: Int){
77
+ let realm = try! Realm()
78
+ try! realm.write{
79
+ realm.delete(todoItems[Index])
80
+ }
81
+
82
+ }
83
+
38
84
  ```
39
85
 
40
86
  5. デバッグ内容と自身の考察