Saya telah membuat sel khusus di UITableView
. Gaya diatur ke Kustom. Pengidentifikasi diatur ke customCell. Aksesori diatur ke Detail. Konten Tampilan Tabel diatur ke Prototipe Dinamis.
Tabel dimuat dengan data dari data inti dan muncul dengan sempurna saat pertama kali muncul. Saat pengguna mengetuk ikon detail di sel, tampilan baru akan muncul sehingga pengguna dapat mengedit data di sel dan menyimpannya ke data inti. Ketika pengguna selesai mengedit dan mengetuk tombol Simpan, tampilan kembali ke UITableView
tetapi sel yang baru saja diedit muncul sebagai sel 'Dasar' dan bukan sel khusus. Jika saya mengetuk sel, sel tersebut akan disorot dan konten sel khusus muncul DI ATAS konten sel dasar.
Sepertinya saya tidak bisa menyelesaikan ini. Adakah yang bisa menyarankan sesuatu?
Berikut adalah bagian prepareForSegue
yang dikirimkan ke pengontrol tampilan pengeditan:
-(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;
Dan sekarang, di View Controller tujuan, tempat data inti diedit, berikut adalah bagian dari metode 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];
}
Ada saran?
Ini cellForRowAtIndex saya di 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;
}
Simpan dan tutup adalah bagian dari subkelas. Inilah caranya:
-(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];
}