2011-10-24 193 views
0

我需要通過單擊按鈕來更改UITableViewCell中包含的UILabel的文本顏色。我創建了一個UIColor object,它在按鈕單擊時設置爲指定顏色,並調用UITableView reloadData方法,即使顏色不變。我應該如何實現這一點?更改UITableViewCell中UILabel的文本顏色

+0

你能解釋一點嗎?你想改變所有行的顏色嗎?還是單排? – Ilanchezhian

+0

我在UITableView的cellForRowAtIndexPath數據源方法中創建了一個自定義UILabel,當我調用UITableView reloaddata方法時,它將作爲子視圖添加到單元格contentView。在我的代碼中,我需要根據顏色的選擇更改添加到單元格中的文本的UILabel/textcolor文本的顏色。 – user574089

+0

好。假設按鈕是UIBarButton,它被添加到導航欄中,我想知道是否需要更改所有標籤或單個標籤的顏色? – Ilanchezhian

回答

0

我假設你想改變你表格中所有行的顏色。 (如果你只是想改變一行,你將需要它的indexPath)。

創建一個跟蹤顏色狀態的變量BOOL。在按鈕點擊例程中,適當設置此值並執行[tableView reloadData]

cellForRowAtIndexPath您需要檢查變量並設置顏色爲每個狀態。您必須雙向執行此操作,否則在滾動時單元格的狀態將變得不可預知。

+0

thnx回答 – user574089

0

對於改變一個UITableViewCell的文本顏色,你必須實現UITableViewDataSource委託功能

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

在那裏,你得到的細胞與

 

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

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

在這裏你可以改變文字的顏色。

BTW:你應該接受一些答案您得到您的問題 - 這將提高你的機會,以獲得未來的問題的答案......

0

精細,當你添加自定義的UILabel的內容查看,設置標籤爲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。contentview addsubview:lblInstructionTitle];} ColorIsSetToBlack是一個布爾值,它設置在點擊按鈕上,然後調用tableview reloaddata方法。你能否告訴我我是否正確行事? – user574089

+0

我已經更新了我的答案。在'cellForRowAtIndexPath'方法中返回單元格之前添加代碼。 – Ilanchezhian