1

Hey Guys 新しいコントローラーをナビゲーション スタックにプッシュしてから、プッシュしたコントローラーを削除したいと考えています。これが私のコードです:

WishDetailViewController *detailView = [self.storyboard instantiateViewControllerWithIdentifier:@"WishDetailView"];
                                             detailView.transferWishID = [NSNumber numberWithFloat:[[response objectForKey:@"id"]floatValue]];
                                             [self.navigationController pushViewController:detailView animated:YES];
                                             [self.navigationController popViewControllerAnimated:NO];

すべて正常に動作しますが、コンソール内に次のメッセージが表示されます:

2013-02-05 10:32:42.029 BWMApp[1444:1a603] nested pop animation can result in corrupted navigation bar
2013-02-05 10:32:42.392 BWMApp[1444:1a603] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.

私が間違っていることと、アプリがこのエラーメッセージをスローしないようにするにはどうすればよいですか?

4

3 に答える 3

3

setViewControllerを使用できます。この例では、すべてを削除して他のものを挿入しますが、基本的な考え方を示します:)

NSMutableArray *viewCons = [[[self navigationController]viewControllers] mutableCopy];
[viewCons removeAllObjects];
[viewCons addObject:portraitTemp];
[viewCons addObject:self];

[[self navigationController] setViewControllers:viewCons];
于 2013-02-05T09:43:06.287 に答える
0

「古い」ビューコントローラをポップする必要はありません。NavigationControllerは、バックボタンを自動的に作成します。スタックからviewcontollerをポップした場合、「ジャンプ」するビューコントローラはありません。これがコンソール内のメッセージの原因です。NavigationControllerが正しく機能しません。

于 2013-02-05T09:43:17.460 に答える
0
WishDetailViewController *detailView = [self.storyboard instantiateViewControllerWithIdentifier:@"WishDetailView"];
detailView.transferWishID = [NSNumber numberWithFloat:[[response objectForKey:@"id"]floatValue]];
[self.navigationController popViewControllerAnimated:NO];
[self.navigationController pushViewController:detailView animated:YES];
于 2014-01-31T07:08:29.270 に答える