IOS 5の編集 - iOS 5で火災は発生しません。
-
11-12-2019 - |
質問
私は2つのセグウトに接続された単純なマスタービューコントローラ、 "Show detail"の場合は「新しい "の追加"のためのものです。
- 「詳細を表示」セッションを指定して詳細ビューコントローラにセグメント:いいえ。
- 「+」(アイコンを追加)セグメントをタップします。指定された詳細ビューコントローラにセグメント:はい
iOS 5.1: "+"が予想されるように機能し、詳細ページは編集モードとEditingStyleForRowAtIndexPath firesに挿入と削除標識を表示します。
iOS 6.0: "+"は詳細ページへの移行を行いますが、editingStyleForRowAtIndexPathは起動しません。設定されている他のコード:はい実行されます。DidSelectrowatIndexPathはFire(delegate= self)を発射します。
詳細ページに1回編集モードが期待どおりに機能します。
任意のアイデア?
.// 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]; .... } }
解決
私はそれを考え出した。これが修正の理由がわからない、私はこれが悪いコードを悪いコードで置き換えないことを願っています。
Master.m
// iOS 5 -- this is OK
detailViewController.editing = YES;
.
IOS 6の場合、DeplaiteMetherを呼び出して、設定するかどうかを判断するためにDELEGATEメソッドを呼び出しました:はい。
Master.m
-(BOOL)isNewRecipe {
return (_isNewRecipe == 1);
}
Detail.m
if ([self.delegate isNewRecipe]) {
[self setEditing:YES];
}
. 所属していません StackOverflow