質問編集履歴

1

コメント欄にソースコードも書きたかったため

2015/08/01 17:45

投稿

yoppy0066
yoppy0066

スコア293

test CHANGED
File without changes
test CHANGED
@@ -113,3 +113,137 @@
113
113
 
114
114
 
115
115
  mvcとかあんまりわかってないので全然ちがってたらすみませんが、どなたかご教授いただけないでしょうか
116
+
117
+
118
+
119
+
120
+
121
+ > __moaiさんへ
122
+
123
+ 実装したい機能のイメージとしては以下のようなものになります
124
+
125
+ 1. セグメントコントロールに新着・人気がある
126
+
127
+ 2. セグメントコントロールの下にリストがある(テーブルビューで実装)
128
+
129
+ 3. リストの各セルにはブックマークボタンがあり、登録中・解除中で色が変わる
130
+
131
+ 4. リストのセルをタップすると詳細画面へ遷移する
132
+
133
+ 5. 詳細画面にもブックマークボタンがある
134
+
135
+
136
+
137
+ で、悩み出した原因としては詳細ページでブックマークして一覧に戻ったときにブックマークの状態をリストにも反映させなくてはいけないなというところから始まりました。
138
+
139
+ また、セグメントコントロールを切り替えた際にも同様の問題が起きえます
140
+
141
+
142
+
143
+ そして今検討中のコードが以下のようなものになります
144
+
145
+
146
+
147
+ `
148
+
149
+ class ModelDemo : NSObject {
150
+
151
+ // 新着リスト・人気リスト
152
+
153
+ dynamic var list: [Dictionary<String,AnyObject>] = [Dictionary<String,AnyObject>]()
154
+
155
+ dynamic var list2: [Dictionary<String,AnyObject>] = [Dictionary<String,AnyObject>]()
156
+
157
+
158
+
159
+ class var sharedInstance : ModelNotes {
160
+
161
+ ・・・
162
+
163
+ }
164
+
165
+
166
+
167
+ // APIの処理など
168
+
169
+ }
170
+
171
+
172
+
173
+ // 一覧ページ
174
+
175
+ class ListViewController : UIViewController {
176
+
177
+ override func viewDidLoad() {
178
+
179
+ super.viewDidLoad()
180
+
181
+
182
+
183
+ // リストデータの監視
184
+
185
+ ModelDemo.sharedInstance.addObserver(self, forKeyPath: "list", options: .New, context: nil)
186
+
187
+ // apiでのデータ取得
188
+
189
+ ModelDemo.sharedInstance.getList()
190
+
191
+ }
192
+
193
+
194
+
195
+ // データの監視
196
+
197
+ override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
198
+
199
+ tableView.reloadData()
200
+
201
+ }
202
+
203
+
204
+
205
+ // ブックマーククリック
206
+
207
+ func onclickBookmark(sender: UIButton) {
208
+
209
+ // apiをたたいて更新
210
+
211
+ ModelDemo.sharedInstance.update(・・・)
212
+
213
+ // 画面更新のためにこちらも更新
214
+
215
+ ModelDemo.sharedInstance.list[sender.tag]["isBookmark"] = true
216
+
217
+ }
218
+
219
+ }
220
+
221
+
222
+
223
+ // 詳細画面
224
+
225
+ class DetailViewController: UIViewController {
226
+
227
+ // 選択された行番号
228
+
229
+ var row: Int!
230
+
231
+
232
+
233
+ // ブックマーククリック
234
+
235
+ func onclickBookmark(sender: UIButton) {
236
+
237
+ // apiをたたいて更新
238
+
239
+ ModelDemo.sharedInstance.update(・・・)
240
+
241
+ // 画面更新のためにこちらも更新
242
+
243
+ ModelDemo.sharedInstance.list[row] = true
244
+
245
+ }
246
+
247
+ }
248
+
249
+ `