使用数组在UITableView中使用不同标签颜色的不同单元格

时间:2013-12-28 14:09:01

标签: ios objective-c uitableview

我正在尝试创建一个UITable,根据代码,每个单元格中的文本标签是不同的。

我正在使用NSArray来构建表。我可以知道如何修改此代码,以便我可以使用特定颜色文本特定项目吗?

以下是代码。

candyArray = [NSArray arrayWithObjects:
                  [Candy candyOfCategory:@"chocolate" name:@"chocolate bar\n 230-239"],
                  [Candy candyOfCategory:@"chocolate" name:@"chocolate chip"],
                  [Candy candyOfCategory:@"chocolate" name:@"dark chocolate"],
                  [Candy candyOfCategory:@"hard" name:@"lollipop"],
                  [Candy candyOfCategory:@"hard" name:@"candy cane"],
                  [Candy candyOfCategory:@"hard" name:@"jaw breaker"],
                  [Candy candyOfCategory:@"other" name:@"caramel"],
                  [Candy candyOfCategory:@"other" name:@"sour chew"],
                  [Candy candyOfCategory:@"other" name:@"peanut butter cup"],
                  [Candy candyOfCategory:@"other" name:@"gummi bear"], nil];
  // Initialize the filteredCandyArray with a capacity equal to the candyArray's capacity
    filteredCandyArray = [NSMutableArray arrayWithCapacity:[candyArray count]];

    // Reload the table
    [[self tableView] reloadData];

2 个答案:

答案 0 :(得分:2)

我会像这样实现单元格:

@interface CandyCell : UITableViewCell

@property (nonatomic,strong) Candy *candy;

@end

设置 candy 属性时仍会发生UI更改(仍在 CandyCell 内)...

-(void)setCandy:(Candy*)candy
{
    _candy = candy;

    //Update UI here (e.g change color of the cell)
}

这有助于保持您的UITableView委托尽可能轻薄。

-(void)viewDidLoad
{
    [self.tableView registerClass:[CandyCell class] forCellReuseIdentifier:NSStringFromClass([CandyCell class])];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CandyCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([CandyCell class])];

    cell.candy = self.candies[indexPath.row];

    return cell;
}

答案 1 :(得分:1)

使用下面的tableView委托方法并在此方法中编写条件代码,为标签的背景颜色指定特定的颜色值。

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


}

在此方法中,您可以使用以下行检查candyArray中的值,然后指定特定颜色。

[candyArray objectAtIndex:indexPath.row]

设置颜色使用UIColor类:

[UIColor redColor] //like for red as you asked
[UIColor colorWithRed:  green: blue: alpha:] // for custom colors