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

回答編集履歴

1

#2

2016/09/06 07:58

投稿

fuzzball
fuzzball

スコア16733

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