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

回答編集履歴

2

誤字修正

2016/09/05 12:44

投稿

TakeOne
TakeOne

スコア6299

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  前回の質問を見たところ、NSUserDefaultsにセルを保存すればいいと理解したのだと思いますが、セルを保存するんじゃありません。セルの「並び順」を保存するんです。
2
2
 
3
- 通常、セルは配列に入っているデータを表示しますから、その場合は配列データを保存すればいいということになります。しかし、前回の質問のコードを見る限り、配列のデータを表示しているのではないような気もしますので、どのようにしてセルを表示しているのか(cellForItemAtIndexPath等)と、どのようにしてセルを並べ替えしているかの具体的コードを見せてもらったらアドバイスができると思います。
3
+ 通常、セルは配列に入っているデータを表示しますから、その場合は配列データを保存すればいいということになります。しかし、前回の質問のコードを見る限り、配列のデータを表示しているのではないような気もしますので、どのようにしてセルを表示しているのか(cellForItemAtIndexPath等)と、どのようにしてセルを並べ替えしているかの具体的コードを見せてもらったらアドバイスができると思います。
4
4
 
5
5
  ----------------------
6
6
  (9/5 21:05回答追記)
@@ -21,7 +21,7 @@
21
21
  }
22
22
  ```
23
23
 
24
- (3)cellForItemAtIndexPath内のswitch文を以下のようにindexPath位置のセルID表示るよう修正
24
+ (3)cellForItemAtIndexPath内のswitch文を以下のようにindexPath位置のセルIDによって表示セルを切り分けるよう修正
25
25
  ``` swift
26
26
  switch cellIDs[indexPath.item] {
27
27
  case "FirstCell":
@@ -42,4 +42,3 @@
42
42
  // 並び順を保存
43
43
  NSUserDefaults.standardUserDefaults().setObject(cellIDs, forKey: "cellIDs")
44
44
  ```
45
-

1

回答追記

2016/09/05 12:44

投稿

TakeOne
TakeOne

スコア6299

answer CHANGED
@@ -1,3 +1,45 @@
1
1
  前回の質問を見たところ、NSUserDefaultsにセルを保存すればいいと理解したのだと思いますが、セルを保存するんじゃありません。セルの「並び順」を保存するんです。
2
2
 
3
- 通常、セルは配列に入っているデータを表示しますから、その場合は配列データを保存すればいいということになります。しかし、前回の質問のコードを見る限り、配列のデータを表示しているのではないような気もしますので、どのようにしてセルを表示しているのか(cellForItemAtIndexPath等)と、どのようにしてセルを並べ替えしているかの具体的にコードを見せてもらったらアドバイスができると思います。
3
+ 通常、セルは配列に入っているデータを表示しますから、その場合は配列データを保存すればいいということになります。しかし、前回の質問のコードを見る限り、配列のデータを表示しているのではないような気もしますので、どのようにしてセルを表示しているのか(cellForItemAtIndexPath等)と、どのようにしてセルを並べ替えしているかの具体的にコードを見せてもらったらアドバイスができると思います。
4
+
5
+ ----------------------
6
+ (9/5 21:05回答追記)
7
+
8
+ ソースコードを参照したところ、並び順を定義しているデータがどこにもないので、まずは並び順を定義するデータから作る必要があります。じゃないと並び順を保存できません。結局のところそれはどのセルIDを何番目に表示するかという定義ですから、セルIDの配列を作るのが一番やりやすいです。
9
+
10
+ 具体的なサンプルを示します。
11
+ (1)ViewControllerのプロパティに以下を追加
12
+ ``` swift
13
+ var cellIDs:[String] = ["FirstCell","SecondCell","ThirdCell"]
14
+ ```
15
+
16
+ (2)viewDidLoad()内に以下の読み込み処理を追加
17
+ ``` swift
18
+ if let cellIDs = NSUserDefaults.standardUserDefaults().arrayForKey("cellIDs") {
19
+ // 並び順が保存されていれば、それを読み込み
20
+ self.cellIDs = cellIDs as! [String]
21
+ }
22
+ ```
23
+
24
+ (3)cellForItemAtIndexPath内のswitch文を以下のようにindexPath位置のセルIDを表示するよう修正
25
+ ``` swift
26
+ switch cellIDs[indexPath.item] {
27
+ case "FirstCell":
28
+
29
+ case "SecondCell":
30
+
31
+ default:
32
+
33
+ }
34
+ ```
35
+
36
+ (4)moveItemAtIndexPath内に以下の配列並べ替え処理と保存処理を追加
37
+ ``` swift
38
+ // 移動元をカット
39
+ let movingItem = cellIDs.removeAtIndex(sourceIndexPath.item)
40
+ // 移動先に挿入
41
+ cellIDs.insert(movingItem, atIndex: destinationIndexPath.item)
42
+ // 並び順を保存
43
+ NSUserDefaults.standardUserDefaults().setObject(cellIDs, forKey: "cellIDs")
44
+ ```
45
+