回答編集履歴

1

セルデータの扱いについて追記

2020/04/06 00:41

投稿

TsukubaDepot
TsukubaDepot

スコア5086

test CHANGED
@@ -53,3 +53,103 @@
53
53
 
54
54
 
55
55
  上記のサンプルはPlaygroundでも動くので、まずは簡単なサンプルを作り動かしてみることで動作を確認されてはいかがでしょうか。
56
+
57
+
58
+
59
+ --
60
+
61
+
62
+
63
+ ToDo のデータを保存したいということであれば、Cell に保存するというか、1件のToDoに対応するクラスを作り、それを配列にして扱った方が簡単です。
64
+
65
+
66
+
67
+ たとえば、
68
+
69
+ ```Swift
70
+
71
+ class Todo {
72
+
73
+ var title: String
74
+
75
+ var todoDescription: String
76
+
77
+
78
+
79
+ init(title: String, description: String = "") {
80
+
81
+ self.title = title
82
+
83
+ self.todoDescription = description
84
+
85
+ }
86
+
87
+ }
88
+
89
+ ```
90
+
91
+ のような感じでクラスを作り、適切なところで
92
+
93
+ ```Swift
94
+
95
+ var todoArray: [Todo] = []
96
+
97
+ ````
98
+
99
+ といった感じでTodoクラスの配列を作り、
100
+
101
+ ```Swift
102
+
103
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
104
+
105
+ // 主要なところのみ掲載
106
+
107
+ let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
108
+
109
+ cell.textLabel?.text = todoArray[indexPath.row].title
110
+
111
+ return cell
112
+
113
+ }
114
+
115
+ ```
116
+
117
+ でテーブルセルに表示させたり、
118
+
119
+ ```Swift
120
+
121
+ func textFieldShouldReturn(_ textField: UITextField) -> Bool {
122
+
123
+ let text = textField.text ?? ""
124
+
125
+ todoArray.append(Todo(title: text))
126
+
127
+
128
+
129
+ tableView.reloadData()
130
+
131
+ // その他必要な処理
132
+
133
+ return true
134
+
135
+
136
+
137
+ }
138
+
139
+ ```
140
+
141
+ で新規データを追加すればいいと思います。
142
+
143
+
144
+
145
+ 同じような感じで、Todoの詳細(`Todo.todoDescription`)は遷移先でセットすればいいのではないでしょうか。
146
+
147
+
148
+
149
+ ちなみに、カスタムクラス(正確にはプロパティリスト)以外のクラスをUserDefaultsに保存するためには、さらにひと工夫必要です。
150
+
151
+
152
+
153
+ これについては過去の回答の後半に例がありますので、そちらも参考にしてみてください。
154
+
155
+ - [[teratail:250323] [swift 5]textViewで変えた色を違う画面のlabelに反映させたい](https://teratail.com/questions/250323)