回答編集履歴

1

#2

2016/09/06 07:58

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -1,3 +1,75 @@
1
+ # #1
2
+
1
3
  heightChangerの中身をそのままheightForRowAtIndexPathに書いてみて下さい。(heightChangerは削除)
2
4
 
3
5
  やりたいことと違う場合は、どのように違うか教えて下さい。
6
+
7
+
8
+
9
+ # #2
10
+
11
+
12
+
13
+ 特定のセル(2-3)だけ高さを変更するサンプル。
14
+
15
+ 高さを変更した後にリロードしないと、すぐに(見た目に)反映されません。
16
+
17
+
18
+
19
+ ```swift
20
+
21
+ class ViewController: UIViewController {
22
+
23
+
24
+
25
+ @IBOutlet var table: UITableView! //TableViewのOutlet(heightChangerの中で使用)
26
+
27
+ var height: CGFloat = 30.0 //高さを保存しておく変数
28
+
29
+
30
+
31
+ :
32
+
33
+
34
+
35
+ override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
36
+
37
+ {
38
+
39
+ if indexPath.section == 2 && indexPath.row >= 3 {
40
+
41
+ //2-3のときだけ保存してある高さを返す
42
+
43
+ return height
44
+
45
+ } else {
46
+
47
+ return 30
48
+
49
+ }
50
+
51
+ }
52
+
53
+
54
+
55
+ func heightChanger() {
56
+
57
+ //高さを変えて
58
+
59
+ height += 10.0
60
+
61
+ //2-3だけリロード(再表示)する
62
+
63
+ table.reloadRowsAtIndexPaths([NSIndexPath(forRow: 2, inSection: 3)], withRowAnimation: .Automatic)
64
+
65
+ //これだとテーブル全体をリロードする
66
+
67
+ //table.reloadData()
68
+
69
+ }
70
+
71
+ }
72
+
73
+ ```
74
+
75
+