2011-10-24 10 views
0

ボタンクリックでUITableViewCellに含まれているUILabelのテキストの色を変更する必要があります。私はUIColor objectを作成しました。これは、ボタンのクリックで指定された色に設定され、UITableView reloadDataメソッドと呼ばれ、色は変更されません。これをどのように実装すればよいですか?UITableViewCellのUILabelのテキストカラーを変更する

+0

もう少し説明できますか?すべての行の色を変更しますか?または単一の行ですか? – Ilanchezhian

+0

私は、UITableViewのデータソースメソッドでカスタムUILabelを作成しました。これは、UITableView reloaddataメソッドを呼び出すと、セルcontentViewにSubviewとして追加されます。私のコードでは、色の選択に基づいてセルに追加されるテキストのUILabel/textcolorのテキストの色を変更する必要がありました。 – user574089

+0

ファイン。ナビゲーションバーに追加されたボタンをUIBarButtonと仮定すると、すべてのラベルの色や単一のラベルを変更する必要があるかどうかを知りたいですか? – Ilanchezhian

答えて

0

テーブルのすべての行の色を変更したいとします。 (1行だけを変更したい場合は、indexPathが必要です)。

色の状態を追跡する変数BOOLを作成します。あなたのボタンクリックルーチンでは、この値を適切に設定し、[tableView reloadData]を実行します。

cellForRowAtIndexPathの場合、その都度変数を設定する必要があります。です。両方向で行うことが不可欠です。そうしないと、スクロールするときにセルの状態が予測できなくなります。

+0

thnxの返信 – user574089

0

のUITableViewCellのテキストの色を変更するためには、

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath(NSINdexPath*)indexPath

があって、あなたはここであなたを

 

UITableViewCell *tableViewcell = [self.tableView dequeueReusableCellWithIdentifier: @"Cell"]; 

if (tableViewCell == nil) 
{ 
    tableViewCell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"Cell"] autorelease]; 
} 

としてセルを取得UITableViewDataSource委任機能を実装する必要がありますテキストの色を変更することができます。

ところで:あなたは、あなたの質問に取得するいくつかの答え受け入れる必要があります - あなたはcontentViewにカスタムUILabelを追加しながら、将来的な質問のための答えを得るためにあなたのチャンスを発生させます...

0

ファインを、タグを設定しますUILabelのために。

UILabel *cl = nil; 
cl = (UILabel*)[cell.contentView viewWithTag:2000]; 
if(!cl) 
{ 
    cl = [[UILabel alloc] initWithFrame:CGRectMake(10,10,100,30)]; 
    cl.tag = 2000; 
    [cell.contentView addSubview:cl]; 
} 
if(beforeButtonPressed) 
cl.textColor = [UIColor blackColor]; 
else if (afterButtonPressed) 
cl.textColor = [UIColor blueColor]; 

私は上記の方法があなたの要件の解決策になると思います。

+0

私はこれだけを行っています。しかし、私は、次のエラー警告が表示されます:私は、ボタンを押して、テキストの色を更新していない後、フレーム内にないブロックでUSE_BLOCK_IN_FRAME変数を作成しようとしています。あなたは私を助けることができますか? – user574089

+0

cellForRowAtIndexPathデータソースメソッドで、以下を実行しました{UILabel * lblInstructionTitle = [[UILabel alloc] init]; if(ColorIsSetToBlack) { lblInstructionTitle.textColor = [UIColor redColor]; } else { \t lblInstructionTitle.textColor = [UIColor whiteColor];} [cell。colorIsSetToBlackはボタンクリックで設定されるブール値で、その後にtableview reloaddataメソッドが呼び出されます。あなたは私が正しくやっているかどうか私pliz私に電話できますか? – user574089

+0

私は自分の答えを更新しました。 'cellForRowAtIndexPath'メソッドでセルを返す前にコードを追加してください。 – Ilanchezhian

関連する問題