「詳細の表示」用と「新規追加」用の2つのセグエに接続された単純なマスタービューコントローラーと詳細ビューコントローラーがあります。
- 「詳細を表示」は、setEditing:NO を使用して詳細ビュー コントローラーにセグエします。
- 「+」(アイコンを追加)をタップして、setEditing:YES で詳細ビュー コントローラに移動します。
iOS 5.1: "+" は期待どおりに機能し、詳細ページは編集モードになり、editingStyleForRowAtIndexPath が起動して挿入インジケーターと削除インジケーターが表示されます。
iOS 6.0: 「+」は詳細ページに移行しますが、editingStyleForRowAtIndexPath は起動しません。setEditing:YES にある他のコードが実行されます。didSelectRowAtIndexPath は起動します (デリゲート = 自己)。
詳細ページの編集モードでは、どちらの場合も期待どおりに機能します。
何か案は?
// Master.m
if([[segue identifier] isEqualToString:@"NewRecipe"]) {
DetailViewController *detailViewController = [segue destinationViewController];
// stuff
detailViewController.recipe = r;
detailViewController.delegate = self;
detailViewController.editing = YES;
}
// Detail.m
-(void)setEditing:(BOOL)flag animated:(BOOL)animated {
if (flag) {
[self.tableView setEditing:flag animated:YES];
[self.tableView beginUpdates];
// the row does get added
[self.tableView insertRowsAtIndexPaths:@[pathToAdd] withRowAnimation:UITableViewRowAnimationAutomatic];
// datasource gets updated here
[self.tableView endUpdates];
....
}
}