У меня есть рабочее приложение, которое в основном состоит из следующего:
Используя Core Data, у меня есть 1 контроллер представления таблицы с кнопкой «Добавить», которая модально вызывает новый контроллер представления, предлагая пользователю добавить текст в три поля. Также есть поле выбора, где пользователь должен выбрать между «куплено» и «продано». Когда пользователь нажимает кнопку «Сохранить», запись добавляется в контроллер табличного представления в виде ячейки подзаголовка с заполненной информацией. Сейчас это хорошо работает без аспекта «купи-продай».
Что я хотел бы сделать, так это просто изменить цвет ячейки таблицы, чтобы он был зеленым для проданного и красным для купленного. Таким образом, когда пользователь добавляет информацию, он заполняет необходимые поля, а также выбирает покупку или продажу, а затем при нажатии кнопки «Сохранить» ячейка табличного представления отображает зеленый или красный цвет для каждой записи.
Я добавляю источник данных tableView и методы делегирования сюда, в текущий TableViewController. При этом я в основном изучаю объект «Транзакция» и извлекаю отношения с другими объектами. «Статус» (Куплено/Продано) также находится в сущности, связанной с сущностью транзакции, в ее собственной сущности, называемой «Покупка». Таким образом, транзакция имеет отношение, называемое status.action (действие является обратным атрибутом транзакции).
Вот код до сих пор из TableView:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.transactions.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Persons";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSManagedObject *transaction = [self.transactions objectAtIndex:indexPath.row];
[cell.textLabel setText:[NSString stringWithFormat:@"%@ %@", [transaction valueForKeyPath:@"whoBy.name"], [transaction valueForKeyPath:@"gifting.amount"]]];
[cell.detailTextLabel setText:[NSString stringWithFormat:@"%@", [transaction valueForKeyPath:@"occasion.title"]]];
return cell;
}
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
[self.managedObjectContext deleteObject:[self.transactions objectAtIndex:indexPath.row]];
[self.transactions removeObjectAtIndex:indexPath.row];
[self.tableView reloadData];
NSError *error = nil;
if (![self.managedObjectContext save:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
[self.tableView reloadData];
}
}
}
Код модального окна, который фактически идет вперед и позволяет пользователю добавлять текст записей (а также выбирать купленные/проданные, которые еще не реализованы), выглядит следующим образом:
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *transaction = [NSEntityDescription insertNewObjectForEntityForName:@"Transaction" inManagedObjectContext:context];
NSManagedObject *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];
NSManagedObject *occasionEvent = [NSEntityDescription insertNewObjectForEntityForName:@"Occasion" inManagedObjectContext:context];
NSManagedObject *amountType = [NSEntityDescription insertNewObjectForEntityForName:@"Gift" inManagedObjectContext:context];
[person setValue:self.nameTextField.text forKey:@"name"];
[occasionEvent setValue:self.occasionTextField.text forKey:@"title"];
[amountType setValue:self.amountTextField.text forKey:@"amount"];
[transaction setValue:person forKey:@"whoBy"];
[transaction setValue:occasionEvent forKey:@"occasion"];
[transaction setValue:amountType forKey:@"gifting"];
Любая помощь будет оценена по достоинству.
Спасибо
cellForRowAtIndexPath:
источник. - person Arek Holko   schedule 14.10.2013