2012-06-26 196 views
0

我在每行中都有一個大的自定義UITableViewUILabels,我想用黑色或綠色顯示某些文本。在UItableViewCell中更改UILabel文本顏色

我從NSArray供給NSString's的細胞。假設我想用黑色顯示30索引中的NSString

我想這樣的事情,但它不工作:

NSIndexPath *indexPathWithBlackText = [NSIndexPath indexPathForRow:30 inSection:[indexPath section]]; 

    if (indexPath.row == indexPathWithBlackText.row) { 
     //Label with text in black 
     topLabel.textColor = [UIColor colorWithRed:0.25 green:0.0 blue:0.0 alpha:1.0]; 
     topLabel.highlightedTextColor = [UIColor colorWithRed:1.0 green:1.0 blue:0.9 alpha:1.0]; 
    } else { 
     //Label with text in green 
     topLabel.textColor = [UIColor colorWithRed:0.122 green:0.467 blue:0.255 alpha:1.00]; 
    } 

在正確的方向任何提示將非常感激。謝謝!

+0

爲什麼不你如果(indexPath == indexPathWithBlackText)?在代碼中你在做什麼? –

+0

我只是試圖將黑色或綠色的文本標籤分配到一個固定的位置,與提供單元格的NSArray中的索引相同。問題是,當我滾動UITableView其他文本也改變顏色,而不僅僅是我想要的行中的顏色,我認爲這是由於UITableView動態繪圖。 – Winston

回答

1

在這種UITableViewDataSource委託方法:

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

這樣寫:

if ([self isBlackRow:indexPath.row]) { 
    // Your label reference, change color to black here. 
} else { 
    // Your label reference, change color to green here. 
} 

製作方法,以確定該行是黑色或不

- (BOOL)isBlackRow:(NSInteger)row { 
    NSArray* blackRows = [NSArray arrayWithObjects:[NSNumber numberWithInt:30], [NSNumber numberWithInt:11], nil]; 

    for (NSNumber* number in blackRows) { 
     if (number.intValue == row) { 
      return YES; 
     } 
    } 

    return NO; 
} 
+0

它的工作原理,但只適用於第30行。如果我想要不同的行,如3,6,11,19,該怎麼辦? – Winston

+0

這將工作。我必須找出一種方法來製作||聲明動態,因爲他們可能會有所不同,他們來到我的NSArray的NSNumbers ... – Winston

+0

它最初的作品,但當我滾動UITableView其他文本也改變顏色了,而不僅僅是行中我想要的,我認爲這是由於UITableView動態繪圖。感謝您的方向! – Winston

0

你如何將標籤添加到表視圖?

這可能是因爲你沒有引用正確的對象。

+0

問題是,每次滾動UITableView時,它都會更改其他單元格的顏色。 – Winston

1
if (indexPath.row > 29) { 
    //Label with text in black 
    topLabel.textColor = [UIColor colorWithRed:0.25 green:0.0 blue:0.0 alpha:1.0]; 
    topLabel.highlightedTextColor = [UIColor colorWithRed:1.0 green:1.0 blue:0.9 alpha:1.0]; 
} else { 
    //Label with text in green 
    topLabel.textColor = [UIColor colorWithRed:0.122 green:0.467 blue:0.255 alpha:1.00]; 
} 
+0

它可以工作,但只適用於第30行。如果我想要不同的行,如3,6,11,19,該怎麼辦? – Winston

+0

我認爲它將被用於大於30的行。它僅僅工作在第30行嗎? – PJR

+1

是的,Andreas提供的驗證幫助解決了更多隨機行的問題。謝謝! – Winston