NSFetchedResultsControllerを使用してGiftオブジェクトのUITableViewListを管理しています。アイデアは、ユーザーがNavbar上のAddボタンをクリックしてGiftsを追加できるようにすることです。追加ボタンは、navigationControllerスタックにギフトを設定するためのビューをプッシュする必要があります。次に、ユーザーが実際にフィールドにデータを入力すると、ユーザーがビューをポップアップ(つまりリストに戻ってナビゲート)すると、新しいギフトがリストに表示されます。十分に簡単です。問題は、私がアプリを再起動しない限りメインリストが更新されないようだということです。全く失われた。終了するまで結果が表示されません。
GiftEditControllerで、
-(void) addgift{
Gift *newGift = [NSEntityDescription insertNewObjectForEntityForName:@"Gift" inManagedObjectContext:self.managedObjectContext];
GiftEditController *editController = [[GiftEditController alloc] initWithStyle:UITableViewStyleGrouped];
editController.gift = newGift;
[self.navigationController pushViewController:editController animated:YES];
[editController release];
}
その後(giftlistcontroller.m)ユーザがメインテーブルビューに "+" ボタンをクリックしたときに呼び出され、ユーザーがフィールドを更新した場合...
- (void)textFieldDidEndEditing:(UITextField *)textField {
if (textField == nameField) {
gift.name = textField.text;
} else if (textField == priceField) {
gift.price = [NSNumber numberWithFloat:[textField.text floatValue]];
}
NSError *error;
if (![gift.managedObjectContext save:&error]) {
NSLog(@"Couldn't save in textFieldDidEndEditing");
}
}
標準的なfetchedresultscontroller delegateメソッドはすべてgiftlistcontrollerで定義されています。完全に困惑し、どんな提案も大いに(!!!!)高く評価されるだろう。
私のviewdidloadにそれを置いても何の違いもありませんでした。 gifteditcontroller内からsaveを呼び出すと、テーブルは - (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id)sectionInfo atIndex :(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)タイプを介して更新されます。問題は、ギフトオブジェクトを保存する私の呼び出しが別のコントローラで発生しているようです。 –
Plastech
'separate controller'にテーブルのインスタンスがある場合、そこに' reloadData'を呼び出すことができます。 –