UIStoryboard上のUITableViewCellのインスタンスを取得する

UIStoryboard上のUITableViewCellのインスタンスを取得する例えば、文字のサイズによってセルの高さを変えたい場合、デフォルト状態のセルの高さが欲しかったりする。

  1. コードで作成したセルはalloc, init…で生成すればOK
  2. UINibで生成したセルは、[UINib nibWithNibName:bundle:]instantiate...すればOK
  3. UIStoryboard上のセルは?

ということで、取得方法を検索したのだがうまく見つからない。ただ単に設計図がほしいだけなのに。

ということ、取得する方法を考えてみました。

registerNibがあるのだからその逆は?

UIStoryboard上に作成したUITableViewCellは、registerNibかregisterClassされていると考えました。このregisterの逆はと考えると、dequeueReusableCellWithIdentifierかなと当たりをつけました。

viewDidLoad:あたりで、dequeue...を実行してセルを取得することが出来ました。使いまわしされるUITableViewCellのインスタンスはUITableViewが管理しているので、念のためretainせず、サイズ(CGSizeやCGRect)だけもらうことにしました。

この方法だとUIStoryboard上でセルのデフォルトサイズなどを変更しても、コードは一切いじる必要なく、動的なセルサイズ変更の処理ができます。ちなみに、セルサイズの変更は、文字列からrectを取り出すあのメソッドですね。bounds…

これが、正しい方法かわかりませんが、誰かの手助けになれば。

Pocket
LINEで送る

You may also like...