当用户单击TableView中的一行时,文本颜色会发生变化。
我的问题是如何在内存中保留单击的行以及何时返回TableView以使行具有新颜色?
这是在cellForRowAtIndexPath:
中NSAttributedString * redString = [[NSAttributedString alloc] initWithString:cell.textLabel.text];
NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] initWithAttributedString:redString];
NSRange boldedRange = NSMakeRange(0, redString.length);
[attributedString addAttribute: NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue-LightItalic" size:15.0] range:boldedRange];
[attributedString addAttribute: NSForegroundColorAttributeName value: [UIColor redColor] range:boldedRange];
[cell.textLabel setAttributedText: attributedString];
提前致谢
答案 0 :(得分:0)
我建议在NSMutableDictionary
中保留UITableViewController
,以跟踪已选择的单元格。然后,只要使用didSelectRowAtIndexPaht:
实施例
-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{
NSIndexPath *idxKey = [NSIndexPath indexForRow:indexPath.row inSection:indexPath.section];
self.myMutableDictionary[idxKey] = @YES;
}
如果在方法签名中提供了NSIndexPath
,则必须创建tableView:cellForRowAtIndexPath
,这似乎很奇怪。问题是,有时它实际上是一个可变的索引路径,并将失败。通过这种方式创建副本,您可以保证它是一个不可变的密钥。
获得字典后,您需要检查-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSIndexPath *idxKey = [NSIndexPath indexForRow:indexPath.row inSection:indexPath.section];
id value = self.myMutableDictionary[idxKey];
if(value){
// Set color selected
} else {
// Set color not selected
}
}
中的字典,看看它是否已被选中。
{{1}}