Я создал пользовательскую ячейку в файле UITableView
. Стиль установлен на Пользовательский. Идентификатор установлен на customCell. Аксессуар установлен на Деталь. Содержимое табличного представления настроено на динамические прототипы.
Таблица загружается данными из основных данных и выглядит идеально при первом появлении. Когда пользователь нажимает значок сведений в ячейке, появляется переход к новому представлению, чтобы пользователь мог редактировать данные в ячейке и сохранять их в основных данных. Когда пользователь закончит редактирование и нажмет кнопку «Сохранить», представление вернется к UITableView
, но только что отредактированная ячейка появится как «базовая», а не как customCell. Если я нажму на ячейку, она подсветится, и пользовательское содержимое ячейки появится НАД основным содержимым ячейки.
Кажется, я не могу решить это. Кто-нибудь может что-нибудь предложить?
Вот часть prepareForSegue
, которая отправляет в контроллер представления редактирования:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(UITableViewCell*)sender {
if ([[segue identifier]isEqualToString:@"editPunchItemSegue"]) {
// DEFINE SEGUE DESTINATION
UINavigationController *navigationController = segue.destinationViewController;
EditPunchItemViewController *editPunchItemViewController = (EditPunchItemViewController*)navigationController.topViewController;
NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
Punchitem *editPunchItem = (Punchitem*)[self.fetchedResultsController objectAtIndexPath:indexPath];
editPunchItemViewController.editPunchitem = editPunchItem;
А теперь в целевом контроллере представления, где редактируются основные данные, вот часть метода saveButtonPressed:
if ([_editSaveButton.title isEqualToString:@"Save"]) {
NSLog(@"Save Button has been PRESSED");
editPunchitem.punchitemRoomNumber = _editPunchitemRoomNumberField.text;
editPunchitem.punchitemDescription = _editPunchitemDescriptionField.text;
editPunchitem.punchitemLocation = _editPunchitemLocationField.text;
editPunchitem.punchitemRoomName = _editPunchitemRoomNameField.text;
editPunchitem.punchitemDate = _editPunchitemDateField.text;
// SAVE TO MANAGE OBJECT CONTEXT!
[super saveAndDismiss];
}
Какие-либо предложения?
Вот мой cellForRowAtIndex в TableViewController
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Running %@ '%@'", self.class, NSStringFromSelector(_cmd));
static NSString *CellIdentifier = @"customCell";
// USING CUSTOM PROTOTYPE CELL:
CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
Punchitem *punchitem = [self.fetchedResultsController objectAtIndexPath:indexPath];
// USING CUSTOM PROTOTYPE CELL:
cell.cellLocationLabel.text = punchitem.punchitemLocation;
cell.cellDescriptionLabel.text = punchitem.punchitemDescription;
cell.cellRoomNameLabel.text = punchitem.punchitemRoomName;
return cell;
}
Сохранить и закрыть является частью подкласса. Вот метод:
-(void) saveAndDismiss {
NSError *error = nil;
if ([self.managedObjectContext hasChanges]) {
if (![self.managedObjectContext save:&error]) { //SAVE FAILED
NSLog(@"YOUR SAVE FAILED! %@", [error localizedDescription]);
} else {
NSLog(@"SAVE SUCCEEDED!");
}
}
[self dismissViewControllerAnimated:YES completion:nil];
}