1

これは私の cellForRowAtIndexPath コードです:

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        NSArray *nibObjcet = [[NSBundle mainBundle] loadNibNamed:@"MonthViewPopUpCell" owner:self options:nil];
        cell = [nibObjcet objectAtIndex:0];

        cellTitle.font = [UIFont fontWithName:fontB size:size4];
        cellSubtitle.font = [UIFont fontWithName:fontR size:size4];
    }

    if (indexPath.row == 0) {
        cellTitle.text = @"11:03";
    }

    return cell;
}

なんらかの理由で、テーブルビューがカスタム セルを間違って再利用します。このコードにより、最初のセルが 11:03 に表示され、残りはすべて 10:00 に表示されると思いましたが (xib ファイルのように)、他のセルにも 11:03 が表示され、スクロールすると位置が変化します。狂ったように上下...

誰かが私が間違ったことを教えてもらえますか?

ありがとう

4

3 に答える 3

0

同じセルを同じ位置で再利用するのではなく、既にメモリに保存されているセルを取得して、別の位置でテーブルに再利用するだけなので、毎回テキストを設定する必要があります。次に例を示します。

    if (cell == nil) {
        NSArray *nibObjcet = [[NSBundle mainBundle] loadNibNamed:@"MonthViewPopUpCell" owner:self options:nil];
        cell = [nibObjcet objectAtIndex:0];

        cellTitle.font = [UIFont fontWithName:fontB size:size4];
        cellSubtitle.font = [UIFont fontWithName:fontR size:size4];
    }

    if (indexPath.row == 0) {
        cellTitle.text = @"11:03";
    }
    else{
        cellTitle.text = @"10:00";
    }
于 2013-05-21T10:40:06.443 に答える
0

通常、セルは UITableView の表示領域から移動すると再利用されます。できることは 1 つです。カスタムセルの再利用可能な識別子がMonthViewPopUpCellに設定されているかどうかもペン先で確認してください

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIdentifier = @"MonthViewPopUpCell"; ////As you have specified in XIB

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        NSArray *nibObjcet = [[NSBundle mainBundle] loadNibNamed:@"MonthViewPopUpCell" owner:self options:nil];
        cell = [nibObjcet objectAtIndex:0];

        cellTitle.font = [UIFont fontWithName:fontB size:size4];
        cellSubtitle.font = [UIFont fontWithName:fontR size:size4];
    }

    if (indexPath.row == 0) {
        cellTitle.text = @"11:03";
    }else {
        cellTitle.text = @"10:00";
   }


    return cell;
}
于 2013-05-21T10:48:28.417 に答える