如何制作UITableViewCell文本,如iOS的Facebook Messenger?

时间:2014-10-31 08:37:24

标签: ios objective-c uitableview

当我们在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;
    }

2 个答案:

答案 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 ()