2012-06-26 76 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