web-dev-qa-db-ja.com

UITableViewCellの背景色が機能しないのはなぜですか(インターフェイスビルダーで設定)。

UITableViewCellの背景色が機能しないのはなぜですか(インターフェイスビルダーで設定)。

いくつかの検索から、UITableViewControllerのカスタムサブクラスに設定された以下のコードが機能することに注意してください(以下を参照)。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.backgroundColor = [UIColor redColor];
}

しかし、インターフェイスビルダーにTableViewCellの背景色が設定されている理由を理解したいのですが、これは事実上機能しないようです。

56
Greg

(これを試して)

AppleのIBの設計は、複数の種類のコンポーネントに適用される一般的なものであり、高度に技術的な対象者(開発者)を対象としています。そのため、コンポーネント/状況のタイプごとにインターフェイスを適切に完全にカスタマイズするように(アプリケーションとして)設計されていません。そのため、この場合、背景色を一見設定する機能がやや誤解を招く場合があります。

0
Greg

少し遅れていますが、私はこの問題にぶつかりました... contentViewの背景色の設定はうまくいきます:

cell.contentView.backgroundColor = [UIColor redColor];
70
chris

私にとってうまくいったのは、UITableViewCellの背景ビューとして設定される独自のUIViewオブジェクトを作成することです。 cellForRowAtIndexPathで:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIView* bgview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
bgview.opaque = YES;
bgview.backgroundColor = [UIColor orangeColor];
[cell setBackgroundView:bgview];
16
Shiprack

UITableViewCell自体の背景色を設定しようとするのは、それを行う方法ではありません。テーブルセルには、アクセスできる5つの便利なビューのコレクションがあり、そのうちの1つはbackgroundViewです。

推奨読書:

http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html

その後:

http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html

11
occulus

Apple Documentation。)のように、_tableView:willDisplayCell:forRowAtIndexPath:_メソッドではなく、_tableView:cellForRowAtIndexPath:_のセルの変更を常に提供する必要があります。

この作品!!

7
Subbu
[cell.textLabel setBackgroundColor:[UIColor clearColor]];
[cell.contentView setBackgroundColor:[UIColor redColor]];
3
Warewolf

セルの色を定義する前に、backgroundViewがnullであることを確認してください

cell.backgroundView = nil;
cell.backgroundColor = [UIColor redColor];
2

これは簡単で機能します。インターフェイスビルダーで、同じディメンションのUITableViewCellにビューオブジェクトを追加し、そのビュー内にコントロールを配置します。次に、必要な背景色を取得します。

編集:ここに受け入れる理由があります、それは私を驚かせました:あなたがペン先に配置するIBのUITableViewCellをダブルクリックしたときに何を得るかを注意深く見て、それに何かを追加し始めます:あなたはプレーンな長方形のビューでは、コンテンツビューという非常に明確な楕円形の長方形が表示されます。したがって、できることは、IBでUITableViewCellのコンテンツビューを設定するだけです。コンテンツビューの背景色プロパティを設定しても、テーブルの色は変更されません。ドキュメントが言うように、UITableViewCellsは多くの部分を持つ複雑な獣であり、UITableViewがそれを調整し、それをいじるという点で舞台裏で多くのことが行われています。

1
Bogatyr

Interface Builderでこれを部​​分的に行うことができます(おそらく最近Xcodeに追加されました):

  • ストーリーボードのドキュメントアウトラインでセルを展開し、[コンテンツビュー]を選択します
  • 属性インスペクターでコンテンツビューの背景色を設定する
  • セル内の各コンテンツアイテムを選択し、背景色をClearColorに設定します

ただし、アクセサリの背景を設定する方法はまだありません。

0
Symmetric

これが私のために働くことを試してください:

- (void)tableView:(UITableView *)tableView1 willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [cell setBackgroundColor:[UIColor clearColor]];
    tableView1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"Cream.jpg"]];
}
0
user4919266

Yではなく、setBackgroundColorを使用します

self.table.separatorColor=[UIColor whiteColor];
[table setBackgroundColor:[UIColor colorWithRed:.8 green:.8 blue:1 alpha:1]];
0
Splendid
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
UIView *view = [[UIView alloc] init];
[view setBackgroundColor:[UIColor redColor]];
[cell setSelectedBackgroundView:view];}

このメソッドで色を変更する必要があります。

0
Hemanshu Liya

テーブルビューを選択して背景を赤などに設定すると、テーブル全体が赤になります。多分あなたはテーブルか何かをリンクしていません

それが助けたことを願っています

0
Csabi

私もこの問題を取得しました。 IBでは、セルを選択するときにセルの背景色を変更することができます。これは正しくありません。ストーリーボードの左側にあるドキュメントアウトラインに移動し、セル内のコンテンツビューを選択する必要があります。コンテンツビューの背景を変更します。これで正しいセルの色が得られるはずです。

0
Odd-Arne