UITableView Tips

UITableViewを使用したプロトタイプをInterfaceBuilderで作っていたが、いくつかはViewController側にコードを書く必要があった。
参考にさせて頂いたサイトを紹介して、その点を備忘録としておく。

行を選択状態にしない

本来は属性"Show selection on touch"をチェックしないことで事足りるはずなのだが、何故かそうはならないので、tableView:cellForRowAtIndexPath:indexPathメソッドをオーバライドする。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
    if (cell) 
    {
        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    }
    return cell;
}

参照サイト:iphone - a problem when disable Show selection on touch of UITableview? - Stack Overflow

固定行を設定する

UITableViewにはヘッダとなるヘッダビューを設定できるが、ヘッダと言う割にははそのままでは普通にスクロールしてしまう。スクロールしないようにするにはscrollViewDidScrollメソッドをオーバライドして同ビューの位置を固定する必要がある。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{
    UIView *headerView = [[self tableView] tableHeaderView];
    [headerView setFrame:CGRectMake(headerView.frame.origin.x
        , self.tableView.contentOffset.y
        , headerView.frame.size.width
        , headerView.frame.size.height)];
}

参照サイト:Storyboad+UITableView+StaticCellsでスクロールしない領域を作る方法 | 手作りプログラム

どちらも非常に重要なTipsであり、参考にさせて頂いたサイトには感謝。