テーブルビューの下部に読み込み中を示すインジケーターを出す方法

はじめに

こんにちは
ビンゴ中西です。

テーブルビューで無限スクロールする方法を検討してみます。

方針

方針としては、
テーブルのセクションを2つ使い

  • セクション0番目を本当に表示したいデータを表示
  • セクション1番目を必要があるときインジゲータを表示

という仕組みで作ります。

セルを返すメソッド

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0){
        return 本当に表示したいデータのセル
    } else {
         return インジゲーターを表示するセル
    }
    return nil;
}

こんな感じで、セルを返します。

セクションを返すメソッド

インジゲータを出すかどうかはセクションを返すメソッドの役目になります。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if (インジゲータ表示必要フラグ){
        return 2;
    }else{
       return 1;
   }
}

セルを表示する前に呼び出されるメソッドでインジゲータが必要かどうかのフラグをたてる

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    APIをたたいたりしてデータの数を確認したりしてフラグを頑張って立てたり立てなかったりするよ
 インジゲータ出してる間のデータ(次のデータ)も取りにいく。
}


こんなイメージ。