回答編集履歴
2
誤字修正
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
回答追記
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
|
+
|