2014-10-31 2 views
2

Когда мы получили сообщение на Facebook Mesenger, текст становится полужирным в UITableViewCell после касания ячейки и просмотра сообщения, а затем возвращается в UITableView, текст ячейки больше не выделен жирным шрифтом.Как сделать UITableViewCell текст, как Facebook Messenger для iOS?

Как создать это поведение?

Ниже мой код:

- (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

HI! Я отправляю код! –

ответ

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 типа к if(), равно численному значению, то, чтобы сделать правильные проверки пришлись использовать метод isEqual:

0
  • Ваша модель объект должен сохранять состояние ли не читать ваше сообщение. Ваш cell должен представить текст жирным шрифтом, если сообщение непрочитано. Когда состояние изменяет, перезагрузите cell и позвольте ему настроить себя в соответствии с этим состоянием.

  • Это очень распространенный образец. Были ли какие-то особые трудности, с которыми вы сталкивались при попытке его реализовать?

+0

Да, у меня есть постоянное хранилище для sabe состояния сообщения, когда ячейка выбрана l, она указывает, как READ в хранилище данных, но как я реализую ячейку? –

+0

Изменить шрифт – Abizern

+0

, если у вас есть пример кода, это поможет! Я создал код, я использую атрибут «if()» для обнаружения UNREAD в «cellForRowAtIndexPath:», но это не произошло. –

Смежные вопросы