我已經添加到我的UITableView
下面的方法來提供該選項的用戶刪除線:如何在添加後從UITableView中刪除一行?
(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
我抄從Xcode的模板,這種方法與選項
使用CoreData用於存儲
一旦用戶按下在UITableView
新UIView
被打開,他應該進入通知addButton
爲新的實體提供服務。
然後用戶觸摸UIView
中的saveButton
。信息被讀取並存儲在上下文中。 UIView
已關閉,用戶將回到UITableView
。
新條目現在出現在新行中。如果用戶現在意識到他犯了一個錯誤,並且想要立即刪除該行(從左向右擦,然後觸摸「刪除」),該行將保持不變,並且不會發生任何其他事情。下面的錯誤是給我的:
An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:.
Invalid update: invalid number of rows in section 0.
The number of rows contained in an existing section after the update (1)
must be equal to the number of rows contained in that section before the update (1),
plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted).
with userInfo (null)
但刪除行工作,如果我在刪除發生之前退出應用程序。 (並重新查看,然後刪除)
在controllerDidChangecontent
只有[self.tableView endUpdate]
被調用。
我的方法是這樣的:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the managed object for the given index path
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
[context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];
//NSLog(@"DATE: %@", [[UIApplication sharedApplication] scheduledLocalNotifications]);
for (UILocalNotification *notification in [[UIApplication sharedApplication] scheduledLocalNotifications]) {
NSLog(@"N: %@", notification.fireDate);
NSLog(@"O: %@", [[self.fetchedResultsController objectAtIndexPath:indexPath] valueForKey:@"zeit"]);
if (notification.fireDate == [[self.fetchedResultsController objectAtIndexPath:indexPath] valueForKey:@"zeit"]) {
[[UIApplication sharedApplication] cancelLocalNotification:notification];
NSLog(@"GELÖSCHT!");
}
}
// Save the context.
NSError *error = nil;
if (![context save:&error]) {
/*
Replace this implementation with code to handle the error appropriately.
abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
*/
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
}
我想加入該行,但不COMMITED。然後它會嘗試刪除一個不知道的行。我是否理解正確? 但我不知道在哪裏修復錯誤。 我能做什麼?有人知道嗎?
我想你必須添加一些詞來告訴我們你的意思。我不明白其中的一些。 – 2012-01-17 20:31:06
圖片總是有幫助的。也許那會更清楚。 :) – 2012-01-17 20:31:39
您瞭解我發佈的錯誤? 我如何解決問題......你想知道什麼? – 2012-01-17 20:46:55