我正在尝试创建一个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];
答案 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