アプリ開発の逆引き辞典

アプリ開発のTipsをまとめました

UITableViewのセクションインデックスの見た目をカスタマイズする

UITableViewは、決められたフォーマット(UITableViewCell)に基づいてリスト形式でデータを表示するクラスです。

データが多くなりリストが長くなった場合には、SectionIndex(セクションインデックス)を使ってセクション単位でのジャンプをする機能を提供します。

セクションインデックスを表示させる

UITableViewのセクションインデックスを単純に表示させたい場合、UITableViewDataSourceのデリゲートのsectionIndexTitlesForTableView:メソッドを以下のように実装します。

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return @[ @"2日", @"3日", @"4日", @"5日", @"6日",
              @"7日", @"8日", @"9日", @"●"];
}

iOS 7.0以降では下図のように表示されます。

f:id:ch3cooh393:20140406004437p:plain

セクションインデックスの文字色を変える

[[UITableView appearance] setSectionIndexColor:[UIColor redColor]];

または、

[UITableView appearance].sectionIndexColor = [UIColor redColor];

f:id:ch3cooh393:20140406004451p:plain

セクションインデックスの背景色を変える

[[UITableView appearance] setSectionIndexBackgroundColor:[UIColor purpleColor]];

または、

[UITableView appearance].sectionIndexBackgroundColor = [UIColor purpleColor];

f:id:ch3cooh393:20140406004502p:plain