Skip to content

UITableViewで、下に消えていったセルの行数を得る

2011年7月12日

UITableViewは、表示するものはindexPath.row返してくれるけど、消えて行くものは教えてくれない。

何とかできないかなーと思って作ってみた。

※セル縦幅が可変になると不具合が起きた(2011/7/13)

メンバ変数は以下2つ
※dataSource_ = テーブルに表示する配列データ
※cellNumber_ = カウントするNSInteger

そして予め、TableViewには
self.tableView_.bounces = NO;
をしておく。これがないとカウントがおかしくなる。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    NSLog(@"indexpath.row : %d",indexPath.row);
    NSLog(@"cellNumber_   : %d",cellNumber_);

    NSString *viewText = [[[NSString alloc] init] autorelease];
    if (cellNumber_ < indexPath.row) {
        NSLog(@"すくないよ");
        cellNumber_ = cellNumber_+1;
        viewText = [dataSource_ objectAtIndex:cellNumber_];

    }else if (cellNumber_ == 1){
        NSLog(@"ゼロだよ");
        cellNumber_ = 0;
        viewText = @"0";
    }
    else if (cellNumber_ > indexPath.row){
        NSLog(@"大きいよ");
        cellNumber_ = cellNumber_ - 1;
        viewText = [dataSource_ objectAtIndex:cellNumber_];
    }

    //計算の帳尻合わせ
    if(indexPath.row == [dataSource_ count]-2){
        NSLog(@"MAX");
        cellNumber_ = indexPath.row + 1;
        viewText = [dataSource_ objectAtIndex:cellNumber_];
    }

    NSString *cellText = [dataSource_ objectAtIndex:indexPath.row];
    cell.textLabel.text = cellText;
    viewLabel_.text = viewText;

    return cell;
}

ただ単に、セルがひとつ表示されるごとにcellNumberを足したり引いたりするだけ。

cellNumberが前のものより小さければ下にスクロールしたということになり、逆に大きければ、上にスクロールした、という結果になる。

ただ、一番最後は次のセルが出ないのでカウントがおかしくなってしまう。故にindexPath.rowをいれてあります。

広告

From → iPhone開発

コメントする

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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