我想知道是否有办法检查一个单元格的 detailTextLabel.text 是否等于另一个单元格的 detailTextLabel.text。
这样做的原因是如果单元格文本彼此相等,我想将 detailTextLabel.textColor 设置为相同的颜色。
例如,如果有多个单元格具有相同的副标题 - 假设我有三个单元格的副标题是比萨饼 - 我想将比萨饼的颜色设置为绿色。
我担心添加我的代码可能会使事情变得更加困惑,因为我根据用户的搜索文本从核心数据中提取副标题(因为我还坚持从数据源获取核心数据,所以发生了很多事情)。所以字幕本身在某种程度上是随机的。我的应用程序实质上允许用户根据类别搜索兴趣点。因此,如果用户搜索比萨饼, map View 将显示所有供应比萨饼的本地餐馆。然后,您可以保存该特定兴趣点,并将副标题设置为披萨(或用户搜索的任何内容)。因此,可能会有多个条目的副标题是披萨(如果用户根据“披萨”保存了多个兴趣点。)
试着忘记设置颜色的逻辑,我真的很想知道如何检查 TableView 中的字幕是否彼此相等。我应该说明我们不检查实际文本是否等于特定字符串:
不是:
if(cell.detailTextLabel.text == @"pizza"){
cell.detailTextLabel.textColor = randomColor;
}
像这样
if(cell.detailTextLabel.text == some other detailTextLabel){
cell.detailTextLabel.textColor = randomColor;
}
核心数据示例
self.category 是我的 NSManagedObject。在这种情况下,我已经能够将随机生成的颜色保留到核心数据中。我真正需要的是将颜色设置为与已保存到核心数据的字幕相同的逻辑。
-(void)configureCell:(CategoryTableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath{
//fetch record
NSManagedObject *record = [self.fetchedResultsController objectAtIndexPath:indexPath];
self.category = [self.fetchedResultsController objectAtIndexPath:indexPath];
float red = [self.category.red floatValue];
float green = [self.category.green floatValue];
float blue = [self.category.blue floatValue];
UIColor *randomRGBColor = [[UIColor alloc] initWithRed:red green:green blue:blue alpha:1.0];
//update cell
[cell.textLabel setText:[record valueForKey:@"name"]];
cell.backgroundColor = randomRGBColor;
}
最佳答案
我认为你的做法是错误的。为什么要比较呈现的单元格中的字符串,而不是在它开始呈现之前。当您创建 UITableView
时,您有特定的数据源,至少是 NSString
数组(标题)。
您可以实现一个渲染方法,在该方法中循环遍历标题数组,找到等于并创建新的 NSDictionary
数组,例如,对于键 @"title"
你有你的标题和键 @"color"
你已经计算了颜色。在您的 tableView:cellForRowAtIndex
方法中,您只需从数组中获取颜色并分配给 UITableViewCell
实例,同时将文本分配给 detailTextLabel
。
关于ios - 如何检查 TableView 单元格字幕是否彼此相等 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31572443/