gpt4 book ai didi

objective-c - 使用 UITableView 和条件时字体颜色设置不正确

转载 作者:行者123 更新时间:2023-11-28 22:46:50 26 4
gpt4 key购买 nike

我有一个 UITableView,它设置了一个核心数据提取结果 Controller 和使用 Storyboard创建的自定义单元格。一切正常,直到我尝试有条件地为某些单元格设置 UILabel 的字体颜色。

默认情况下,在 Storyboard 中,每个单元格都以灰色字体显示“出发时间”。但是,如果单元格代表用户的当前位置,则字体应为蓝色。所以我在 configureCell 中设置了一个条件(靠近这段代码的底部):

-(void) configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
if ([cell isMemberOfClass:[SectionDividerCell class]]) {
[self configureSectionDividerCell:(SectionDividerCell *)cell atIndexPath:indexPath];
}
else if ([cell isMemberOfClass:[VisitCell class]]) {
[self configureVisitCell:(VisitCell *)cell atIndexPath:indexPath];
}
}

-(void) configureVisitCell:(VisitCell *)cell atIndexPath:(NSIndexPath *)indexPath {
//Regular visit cell

Visit *visit = [self.fetchedResultsController objectAtIndexPath:indexPath];

//Set text content
cell.titlePlace.text = visit.place_name;
cell.arriveText.text = [visit getArrivalTimeDisplay:@"hh:mm a"];
cell.leaveText.text = [visit getDepartureTimeDisplay:@"hh:mm a"];
cell.durationText.text = visit.durationDisplay;

//Set fonts
[cell.durationText setFont:[UIFont fontWithName:@"Roboto-BoldCondensed" size:20.0]];
[cell.arriveText setFont:[UIFont fontWithName:@"Roboto-Light" size:12.0]];
[cell.titlePlace setFont:[UIFont fontWithName:@"Roboto-BoldCondensed" size:17.0]];

//If current location, make text blue
if (!visit.departure_time) {
[cell.leaveText setFont:[UIFont fontWithName:@"Roboto-Bold" size:12.0]];
[cell.leaveText setTextColor:[UIColor blueColor]];
}
else {
[cell.leaveText setFont:[UIFont fontWithName:@"Roboto-Light" size:12.0]];

}

//Get Image for cell
if (!cell.imgThumb.image) {

NSString *imageURL = [[docDir stringByAppendingString:@"/"] stringByAppendingString:visit.place.imageName];
[cell.imgThumb setImage:[[UIImage alloc] initWithContentsOfFile:imageURL]];
}

}

使用上面的代码,“当前位置”单元格的 UILabel 正确地着色为蓝色,但其他一些单元格也着色为蓝色(似乎是随机的 - 大约 10% 的单元格发生这种情况。

如果我在 else 语句中添加此代码以将非当前位置的单元格的颜色设置回默认值,它可以解决问题: [cell.leaveText setTextColor:[UIColor greyColor]];

但我不明白的是,为什么有些单元格的字体颜色设置不正确?

最佳答案

Why are some cells incorrectly having their font color set?

这并没有错。

If I add this code within the else statement to set the color back to the default for cells that are not the current location, it fixes the problem: [cell.leaveText setTextColor:[UIColor greyColor]];

是的,没错。那是因为 UITableView 为了减少内存占用,重新使用了表格 View 单元格。当单元格被重复使用时,UITableView 不会重置其属性,因此必须将它们重置为默认值。你也可以在我的一些代码中看到这种模式,例如,this file browser UITableView使用浅蓝色显示符号链接(symbolic link),但默认黑色显示普通文件。在这里您还可以看到条件语句的 else 分支。

// test for symlink
if (readlink([childPath UTF8String], NULL, 0) != -1) {
cell.textLabel.textColor = [UIColor colorWithRed:0.1f green:0.3f blue:1.0f alpha:1.0f];
} else {
cell.textLabel.textColor = [UIColor blackColor];
}

关于objective-c - 使用 UITableView 和条件时字体颜色设置不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12995705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com