回答編集履歴
2
誤字修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
通常、セルは配列に入っているデータを表示しますから、その場合は配列データを保存すればいいということになります。しかし、前回の質問のコードを見る限り、配列のデータを表示しているのではないような気もしますので、どのようにしてセルを表示しているのか(cellForItemAtIndexPath等)と、どのようにしてセルを並べ替えしているかの具体的
|
5
|
+
通常、セルは配列に入っているデータを表示しますから、その場合は配列データを保存すればいいということになります。しかし、前回の質問のコードを見る限り、配列のデータを表示しているのではないような気もしますので、どのようにしてセルを表示しているのか(cellForItemAtIndexPath等)と、どのようにしてセルを並べ替えしているかの具体的なコードを見せてもらったらアドバイスができると思います。
|
6
6
|
|
7
7
|
|
8
8
|
|
@@ -44,7 +44,7 @@
|
|
44
44
|
|
45
45
|
|
46
46
|
|
47
|
-
(3)cellForItemAtIndexPath内のswitch文を以下のようにindexPath位置のセルID
|
47
|
+
(3)cellForItemAtIndexPath内のswitch文を以下のようにindexPath位置のセルIDによって表示セルを切り分けるよう修正
|
48
48
|
|
49
49
|
``` swift
|
50
50
|
|
@@ -87,5 +87,3 @@
|
|
87
87
|
```
|
88
88
|
|
89
89
|
|
90
|
-
|
91
|
-
|
1
回答追記
test
CHANGED
@@ -3,3 +3,89 @@
|
|
3
3
|
|
4
4
|
|
5
5
|
通常、セルは配列に入っているデータを表示しますから、その場合は配列データを保存すればいいということになります。しかし、前回の質問のコードを見る限り、配列のデータを表示しているのではないような気もしますので、どのようにしてセルを表示しているのか(cellForItemAtIndexPath等)と、どのようにしてセルを並べ替えしているかの具体的にコードを見せてもらったらアドバイスができると思います。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
----------------------
|
10
|
+
|
11
|
+
(9/5 21:05回答追記)
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
ソースコードを参照したところ、並び順を定義しているデータがどこにもないので、まずは並び順を定義するデータから作る必要があります。じゃないと並び順を保存できません。結局のところそれはどのセルIDを何番目に表示するかという定義ですから、セルIDの配列を作るのが一番やりやすいです。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
具体的なサンプルを示します。
|
20
|
+
|
21
|
+
(1)ViewControllerのプロパティに以下を追加
|
22
|
+
|
23
|
+
``` swift
|
24
|
+
|
25
|
+
var cellIDs:[String] = ["FirstCell","SecondCell","ThirdCell"]
|
26
|
+
|
27
|
+
```
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
(2)viewDidLoad()内に以下の読み込み処理を追加
|
32
|
+
|
33
|
+
``` swift
|
34
|
+
|
35
|
+
if let cellIDs = NSUserDefaults.standardUserDefaults().arrayForKey("cellIDs") {
|
36
|
+
|
37
|
+
// 並び順が保存されていれば、それを読み込み
|
38
|
+
|
39
|
+
self.cellIDs = cellIDs as! [String]
|
40
|
+
|
41
|
+
}
|
42
|
+
|
43
|
+
```
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
(3)cellForItemAtIndexPath内のswitch文を以下のようにindexPath位置のセルIDを表示するよう修正
|
48
|
+
|
49
|
+
``` swift
|
50
|
+
|
51
|
+
switch cellIDs[indexPath.item] {
|
52
|
+
|
53
|
+
case "FirstCell":
|
54
|
+
|
55
|
+
〜
|
56
|
+
|
57
|
+
case "SecondCell":
|
58
|
+
|
59
|
+
〜
|
60
|
+
|
61
|
+
default:
|
62
|
+
|
63
|
+
〜
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
```
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
(4)moveItemAtIndexPath内に以下の配列並べ替え処理と保存処理を追加
|
72
|
+
|
73
|
+
``` swift
|
74
|
+
|
75
|
+
// 移動元をカット
|
76
|
+
|
77
|
+
let movingItem = cellIDs.removeAtIndex(sourceIndexPath.item)
|
78
|
+
|
79
|
+
// 移動先に挿入
|
80
|
+
|
81
|
+
cellIDs.insert(movingItem, atIndex: destinationIndexPath.item)
|
82
|
+
|
83
|
+
// 並び順を保存
|
84
|
+
|
85
|
+
NSUserDefaults.standardUserDefaults().setObject(cellIDs, forKey: "cellIDs")
|
86
|
+
|
87
|
+
```
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|