Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@rooooomania

カスタムセルをつかってTableViewのセルを装飾しようとした場合のお約束

背景

カスタムセルを使いたくなる局面は結構多いのだが、必ずやることとその内容を忘れてしまうことが多いのでその覚書として。

問題

カスタムセルをつかってTableViewのセルを装飾しようとした場合、はじめにviewDidLoadにて登録処理をしないと反映されない。また、カスタムセルで設定した高さは、別途デリゲートメソッドで設定しないと実際に反映されない。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

だけ実装してもうまくいかないですよ、という問題。

解法

まずはviewDidLoadでカスタムセルを登録。

   [self.tableView registerNib:[UINib nibWithNibName:@"RecordCell" bundle:nil] forCellReuseIdentifier:@"RecordCell"];

その後、下記のメソッドにて適切な高さを設定。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 80;
}

これだと、セルの数だけこのメソッドが呼ばれるということで、viewDidLoad時に下記の設定を行うことにする。

self.tableView.rowHeight = 80;

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
5
Help us understand the problem. What are the problem?