UITableViewCellの背景色が機能しないのはなぜですか(インターフェイスビルダーで設定)。
いくつかの検索から、UITableViewControllerのカスタムサブクラスに設定された以下のコードが機能することに注意してください(以下を参照)。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = [UIColor redColor];
}
しかし、インターフェイスビルダーにTableViewCellの背景色が設定されている理由を理解したいのですが、これは事実上機能しないようです。
(これを試して)
AppleのIBの設計は、複数の種類のコンポーネントに適用される一般的なものであり、高度に技術的な対象者(開発者)を対象としています。そのため、コンポーネント/状況のタイプごとにインターフェイスを適切に完全にカスタマイズするように(アプリケーションとして)設計されていません。そのため、この場合、背景色を一見設定する機能がやや誤解を招く場合があります。
少し遅れていますが、私はこの問題にぶつかりました... contentView
の背景色の設定はうまくいきます:
cell.contentView.backgroundColor = [UIColor redColor];
私にとってうまくいったのは、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];
UITableViewCell自体の背景色を設定しようとするのは、それを行う方法ではありません。テーブルセルには、アクセスできる5つの便利なビューのコレクションがあり、そのうちの1つはbackgroundView
です。
推奨読書:
http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html
その後:
http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html
Apple Documentation。)のように、_tableView:willDisplayCell:forRowAtIndexPath:
_メソッドではなく、_tableView:cellForRowAtIndexPath:
_のセルの変更を常に提供する必要があります。
この作品!!
[cell.textLabel setBackgroundColor:[UIColor clearColor]];
[cell.contentView setBackgroundColor:[UIColor redColor]];
セルの色を定義する前に、backgroundView
がnullであることを確認してください
cell.backgroundView = nil;
cell.backgroundColor = [UIColor redColor];
これは簡単で機能します。インターフェイスビルダーで、同じディメンションのUITableViewCellにビューオブジェクトを追加し、そのビュー内にコントロールを配置します。次に、必要な背景色を取得します。
編集:ここに受け入れる理由があります、それは私を驚かせました:あなたがペン先に配置するIBのUITableViewCellをダブルクリックしたときに何を得るかを注意深く見て、それに何かを追加し始めます:あなたはプレーンな長方形のビューでは、コンテンツビューという非常に明確な楕円形の長方形が表示されます。したがって、できることは、IBでUITableViewCellのコンテンツビューを設定するだけです。コンテンツビューの背景色プロパティを設定しても、テーブルの色は変更されません。ドキュメントが言うように、UITableViewCellsは多くの部分を持つ複雑な獣であり、UITableViewがそれを調整し、それをいじるという点で舞台裏で多くのことが行われています。
Interface Builderでこれを部分的に行うことができます(おそらく最近Xcodeに追加されました):
ただし、アクセサリの背景を設定する方法はまだありません。
これが私のために働くことを試してください:
- (void)tableView:(UITableView *)tableView1 willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
[cell setBackgroundColor:[UIColor clearColor]];
tableView1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"Cream.jpg"]];
}
Yではなく、setBackgroundColorを使用します
self.table.separatorColor=[UIColor whiteColor];
[table setBackgroundColor:[UIColor colorWithRed:.8 green:.8 blue:1 alpha:1]];
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
UIView *view = [[UIView alloc] init];
[view setBackgroundColor:[UIColor redColor]];
[cell setSelectedBackgroundView:view];}
このメソッドで色を変更する必要があります。
テーブルビューを選択して背景を赤などに設定すると、テーブル全体が赤になります。多分あなたはテーブルか何かをリンクしていません
それが助けたことを願っています
私もこの問題を取得しました。 IBでは、セルを選択するときにセルの背景色を変更することができます。これは正しくありません。ストーリーボードの左側にあるドキュメントアウトラインに移動し、セル内のコンテンツビューを選択する必要があります。コンテンツビューの背景を変更します。これで正しいセルの色が得られるはずです。