2015-12-13 6 views
5

UIAppearanceメカニズムを使用してUITableViewCellのテキストの色を変更できません。ここでUIAppearanceを使用してすべてのUITableViewCellのテキストの色を変更します。

は私の私のために働いているものを示すコメントをコードしてものではありませんです。

UITableViewCell *cell = [UITableViewCell appearance]; 
cell.backgroundColor = [UIColor blueColor]; // working 
cell.textLabel.textColor = [UIColor whiteColor]; // NOT WORKING 
cell.detailTextLabel.textColor = [UIColor redColor]; // NOT WORKING 

UILabel *cellLabel = [UILabel appearanceWhenContainedIn:[UITableViewCell class], nil]; 
cellLabel.textColor = [UIColor whiteColor]; // working 

あなたが見ることができるように、第二の方法は、働いているが、私は通常のテキストや細部に異なる色を設定することはできませんテキスト。

私が間違っていることはありますか?

P.S. Interface Builderで静的に定義することはできません。実行時に動的に変更できるテーマがあります。

答えて

3

あなたは正しいことをやっていますが、iOSがUIAppearanceを使って2つのラベルを区別する方法はありません。 willDisplayCellにテキストの色を設定するか、実際にUIAppearanceを使用する場合は、より正確にターゲット設定できるカスタムUILabelサブクラスを作成する必要があります。あなたがwillDisplayCellを使用したい場合は

、それは次のようになります。また

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

you might also find this answer has some other ideas.

+0

私は小さな明確化が必要です - 私は詳細なテキストのために1つのUILabelサブクラス、例えばMyLabelを作成しました。それから、私はUILabelの外観とMyLabelの外観に色付けして、同じクラス階層を与えました。問題は、UILabelの色が常に「勝ち」、MyLabelの色が決して適用されないことです。どのように条件が評価されるかについての考えはありますか? – frangulyan

1

は、あなたがこのようなテキストの色を設定することができます。

[cell.textLabel setTextColor:[UIColor whiteColor]]; 
[cell.detailTextLabel setTextColor:[UIColor redColor]]; 
+0

私の記事で述べたように、それは機能しません。 '[cell.textLabel setTextColor:[UIColor whiteColor]]; ' と' cell.textLabel.textColor = [UIColor whiteColor];の間に違いはないと思います。 // NOT WORKING' – frangulyan

+0

UILabel * label =(UILabel *)[cell.contentView viewWithTag:yourLabelTag];ビューからラベルを取得しようとすることができます。テキストの色を設定します。 –

+0

外観プロキシですが、contentViewはありません。 – frangulyan

関連する問題