現在 45 個の項目を含む配列からデータを取り込んでいるテーブル ビューがあります。目標は、最初に 20 個を表示し、ユーザーがテーブル ビューの一番下までスクロールしたときにさらに 20 個のアイテムを段階的に表示することです。
セルに情報を入力するメソッドを次に示します。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if(!cell){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
    }
    cell.textLabel.text = [[listings objectAtIndex:indexPath.row] objectForKey:@"listingName"];
    return cell;
}
テーブルビューの長さを決定する方法は次のとおりです。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    if (listings.count < 20){
        return listings.count;
    }
    return tableViewSize; 
}
tableViewSizeは、値 20 でインスタンス化するインスタンス変数です。次のメソッドを使用して、ユーザーが一番下までスクロールするたびに値を 20 ずつ増やします。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
    if(indexPath.row == (listings.count - 1)){
        tableViewSize += 20;
        if(tableViewSize > listings.count){
            tableViewSize = listings.count; 
        }
    }
    [tableView reloadData];
}
問題は非常に奇妙です。後者のメソッドを含めるtableView:willDisplayCell:forRowAtIndexPath:と、テーブル ビューには 1 つのセルしか表示されません (現時点ではすべてのオブジェクトが同じであるため、配列内のどのオブジェクトかわかりません。必要に応じて調べることができます)。後者の方法をコメントアウトすると、テーブル ビューに 20 個のセルが正しく表示されます。
このメソッドがテーブルビューをこのように動作させる理由を誰かが知っていますか?