Вы должны создать некоторую базовую модель для клеточных состояний: например
@property NSString *modelState = @"red"; // this is fast hint, but it can be a enum with states.
все ячейки будут иметь один титул после крана.
... другой код ... Контроллер
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self.restaurantTable dequeueReusableCellWithIdentifier:@"cell_ID"];
// cell customization method
[self customizeCell:cell accordingToStateStr:modelState];
return cell;
}
... другой код ... Контроллер
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:NO];
// Set other state for cell
self.modelState = @"red";
[tableView reloadData];
}
- (void)customizeCell:(UITableViewCell*)cell accordingToStateStr:(NSString *)str {
if ([str isEqualToString:@"red"]) {
cell.backgroundColor = [UIColor redColor];
cell.textLabel.textColor = [UIColor redColor];
cell.textLabel.text = @"Title";
} else if(...) {
//Other options..
}
}
[Tableview reloadData]; - снова вызовет метод cellForRow, и ваша таблица будет перерисована в соответствии с новой моделью.
Вы можете использовать для состояний ячеек элементов вместо объекта NSString (для вас это только эшафот).
Это то, что я безуспешно делаю (проверьте код примера) ... –
@TomKortney внимательно прочитайте мой код. Я отправляю сообщение 'tableView' напрямую, а не' self'. – liushuaikobe
Насколько я видел, этот ответ является самым простым и легким. Спасибо! –