忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/23 06:11 】 |
UITableViewのいろいろなこと

rowHeight

iOS8からは、セルの高さの計算方法が変わったらしい。

ストーリーボードでtableViewにrowHeightが指定できるが、
実行時には値が-1になっている。
これは
UITableViewAutomaticDimension
という定数値で、セル高さを自動計算する設定ということだ。

viewDidLoadで

tableView.rowHeight = 44;




という感じで設定すれば良い。

そうすると他のコード中でもrowHeightが使えるようになり、
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
をオーバーライドしなくてもよくなる。

セル高さが常に同じなら、tableView:heightForRowAtIndexPath: を実装するより、rowHeightを定義したほうが早い。と思う。

他に
estimatedRowHeight
というプロパティもある。

詳しくは

テーブルビューの中身のサイズ

テーブルビューはスクロールビューでもある。
つまり、UITableViewはUIScrollViewの子クラスである。

だから、UIScrollViewで使えるプロパティやメソッドはUITableViewでも使える。
ストーリーボードでも設定項目がちゃんとある。


だから、テーブルビューのセルとセクションを含めた中身全体のサイズは、

tableView.contentSize




で取得することができる。heightForRowAtIndexPath とか heightForHeaderInSection とかのメソッドを使う必要は無い。

追加・削除アニメーションと中身のサイズ

insertRowsAtIndexPaths: withRowAnimation:
で追加するとき、contentSizeは
追加前の値のままである。
アニメーションが終わったとき、追加後のサイズになる。

deleteRowsAtIndexPaths: withRowAnimation:
も同様。

追加・削除指定の注意

セルの追加や削除をするとき、データソースの変更とセルの変更を一緒に行う。
基本的にデータソースが先である。


[self.dataSource insertObject:newData atIndex:index];
[self.tableView insertRowsAtIndexPaths:indexPath withRowAnimation:UITableViewRowAnimationLeft];





当然だが、データソースに追加するindexと、セル位置を指定するrowAtIndexは整合が取れていないといけない。つまり
tableView: cellForRowAtIndexPath:
が返す物と同じであること。

追加・削除しても、当該のセル以外は再描画しないで位置だけ移動する。

行の削除、セクションの削除

行・セクションを削除するメソッドは

[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationFade];


となる。

注意点
deleteRows の結果、セクション内の行が0行になると実行時エラーになる。
0行になるときは、 deleteSections を実行すること。(deleteRowsは実行しないこと)
PR
【2014/10/22 12:34 】 | iPhone | 有り難いご意見(0)
<<layoutSubviews | ホーム | pchファイルを作る>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>