0

デフォルトの背景色のヘッダーを持つテーブルビューがあります。テーブルの結果をフィルタリングするフィルターバーもあります。フィルタリングすると、ヘッダーはすべて黒いバーになります。

viewForHeaderInSection で背景色を特定の色に設定すると、予期しない動作は発生しません。backgroundColor を nil に設定すると、期待どおりに機能し、デフォルトの色が与えられますが、検索すると機能しません。

検索結果のデフォルトのセルの背景色はどういうわけか黒ですか?

ここに私の実験からのいくつかのコードがあります:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    static NSString *cellIdentifier = @"HeaderCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }

    //cell.contentView.backgroundColor = [UIColor colorWithRed:0.663 green:0.663 blue:0.663 alpha:1];
    //[cell setBackgroundColor:[UIColor lightGrayColor]];
    [cell setBackgroundColor:nil];
    if(tableView == self.searchDisplayController.searchResultsTableView) {
        [cell setBackgroundColor:[UIColor lightGrayColor]];
    }
    [[cell textLabel] setFont:[UIFont boldSystemFontOfSize:16]];
    [[cell textLabel] setTextAlignment:NSTextAlignmentCenter];
     cell.accessoryType = UITableViewCellAccessoryNone;

    return cell;
}

上記のコードは、通常はデフォルトのヘッダーを表示し、検索後に lightGray を表示します。[cell setBackgroundColor:nil]; を入れると if ステートメントでは、黒いバーが表示されます。

ここで何が起こっているのか誰にも分かりませんか?また、エレガントな修正がない場合は、手動で設定できるようにデフォルトの背景色を誰か教えてもらえますか?

ありがとう。

4

1 に答える 1

1

もちろん、背景色を に設定すると黒くなりますnilUIColorセルが背景色を設定するために使用するオブジェクトを効果的に取り除きます。

色を元の色に戻す必要があります。上記のカラーコードがあるようですが、コメントしています。それはあなたのために働いていませんか?

cell.contentView.backgroundColor = [UIColor colorWithRed:0.663 green:0.663 blue:0.663 alpha:1];
于 2013-08-20T22:11:18.827 に答える