当我们在Facebook Mesenger上收到消息时,在触摸单元格并查看消息后,文本在UITableViewCell中变为粗体,然后返回到UITableView,单元格文本不再以粗体显示。
如何创建此行为?
在我的代码下面:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
.
.
.
//Implementation
.
.
.
[[fetchedObjects objectAtIndex:indexPath.row ] setValue:@"1" forKey:@"lido"];
NSError*error;
// Escreve no banco a alteração
[context save:&error];
for (int index = 0; index<[fetchedObjects count]; index++) {
NSLog(@"%@",[[fetchedObjects objectAtIndex:index]valueForKey:@"lido"]);
.
.
.
// Implementation
}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.
.
.
//Implmentation
.
.
.
if ([[arrayProcessosLocal objectAtIndex:indexPath.row ] valueForKey:@"lido"] == 1) {
//Torna fonte bold
cell.textLabel.font = [UIFont boldSystemFontOfSize:17];
[cell.textLabel setText:[NSString stringWithFormat:@"%@ - %@", [processosLocal valueForKey:@"processo"],[processosLocal valueForKey:@"data_pdf"]]];
return cell;
}else{
// Exibe a fonte normal caso o valor de "lido" seja 0 (zero)
[cell.textLabel setText:[NSString stringWithFormat:@"%@ - %@", [processosLocal valueForKey:@"processo"], [processosLocal valueForKey:@"data_pdf"]]];
return cell;
}
答案 0 :(得分:0)
您的模型对象应该存储您的消息是否被读取的状态。当邮件未读时,您的cell
应以粗体显示文本。状态更改时重新加载cell
并让它根据此状态进行自我配置。
这是一种非常常见的模式。你试图实施它有什么特别的困难吗?
答案 1 :(得分:0)
问题是Core Data
到@"lido"
中的数据类型。对于Core Data
到@"lido"
字段中的类型是STRING,我正在与INT
中的IF ()
进行直接比较。
cellForRowAtIndexPath:
if ([[arrayProcessosLocal objectAtIndex: indexPath.row] valueForKey: @ "read"] == 1) {
.
.
.
// Other implementation
正确的代码!
if ([[[arrayProcessosLocal objectAtIndex: indexPath.row] valueForKey: @ "read"] isEqual: @ "1"]) {
.
.
.
// Other implementation
Xcode无法知道来自Core Data
的数据类型,并且在运行时没有问题,因为STRING
的{{1}}类型等于数值,然后到进行正确的验证必须使用方法if ()