ホーム > 開発 > UITableViewControllerは何をやっているか

UITableViewControllerは何をやっているか

諸々の事情で、UITableViewを制御する時にUITableViewControllerを使えない場合があります。たとえば、トップビューがUITableViewでは無くUIViewで、サブビューにUITableViewが配置されている場合などです。iPhone OS 2.x時代であれば、UITableViewの下にUIToolbarを配置するケースが該当します。

このような場合、UIViewControllerのサブクラスにUITableViewController相当の機能を実装する必要があります。概ね、下記を実装すれば遜色ない動作をするようです。

  • viewWillAppear:をオーバーライドして、UITableViewのreloadDataを呼び出し、データをリロードする。ただし初回のみ。メモリワーニングでビューがアンロードされた場合は再度リロードが必要になるので、viewDidLoadでフラグを立てると良い。
  • viewDidAppear:をオーバーライドして、UITableViewのflashScrollIndicatorsを呼び出し、スクロールインジケータをフラッシュさせる。
  • setEditing:animated:をオーバーライドして、UITableViewのsetEditing:animated:を呼び出し、編集状態を更新する。

コードにするとこんな感じ。

- (void)viewDidLoad {
    [super viewDidLoad];
    reloaded = NO;
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    if (!reloaded) {
        [tableView reloadData];
        reloaded = YES;
    }
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [tableView flashScrollIndicators];
}

- (void)setEditing:(BOOL)aEditing animated:(BOOL)animated {
    [super setEditing:aEditing animated:animated];
    [tableView setEditing:aEditing animated:animated];
}
広告
カテゴリー:開発 タグ: ,
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。