0

私の有線の問題がいくつかありますUITableView

  1. それらのセルの背景色を変更するにはindexPath.row = 0。しかし、いくつかのセルも変更されます。ランダムに見えます。
  2. 作成方法は2つUITableViewCellですが、かなり変なのが……、難しすぎるのでgithubSMFirstViewController.mで見て ください。

  3. prepareForSegue:sender:期待どおりに動作しません。奇妙なことに、indexPath = [self.tableView indexPathForCell:sender]時にはCELL METHOD 1または2の観点indexPathからnull

これらの問題は複雑すぎるように見えるので、コードを github にアップロードします。https://github.com/i0sdev/Temp/tree/segueは、SMFirstViewController.m問題が発生するファイルです。

修正にご協力いただければ幸いです。ありがとうございました!

4

1 に答える 1

1

問題は、方法 1 でセルの再利用を考慮していないことです (方法 2 も使用しないでください)。ifステートメントが実行されると、セルが茶色になり、そのセルが再利用されると、どのindexPath.rowにあるかに関係なく、セルのプロパティを設定するたびに、indexPathに基づいてセルのプロパティを設定しますする場合は、if だけでなく、else 句が必要です。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *identifier = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    
    if (indexPath.row == 0)
    {
        cell.backgroundColor = [UIColor brownColor];
        cell.textLabel.textAlignment = NSTextAlignmentCenter;
    }else{
        cell.backgroundColor = [UIColor whiteColor];
        cell.textLabel.textAlignment = NSTextAlignmentLeft;
    }
    NSArray * array = [[list objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
    cell.textLabel.text = [array valueForKey:@"Number"];
    cell.detailTextLabel.text = [NSString stringWithFormat:@"row: %d", indexPath.row];
    
    return cell;
}

方法 1 に固執する限り、prepareForSegue は適切に機能するはずです。

于 2013-09-22T05:13:01.113 に答える