0

私のプロジェクトでは、約10個のView Controllerがあります。ビュー コントローラーの 1 つで、追加機能を提供するために xib にビュー コントローラーをもう 1 つ追加しました (1 つの実際のビュー + 単一のクラス用に追加されたビュー コントローラー)。最初は正常にナビゲートされ、実際のビューに戻ります。しかし、もう一度ビューコントローラーを追加すると、アプリがクラッシュします。これは表示されるエラーです。

"Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported (<UIViewController: 0xc09e460>)'
First throw call stack:
(0x30da012 0x28b4e7e 0xb9c5b0 0xb9c098 0xa7f3f 0xab327 0x28c86b0 0x5fcfb 0x28c86b0 0x706035 0x305df3f 0x305d96f 0x3080734 0x307ff44 0x307fe1b 0x33127e3 0x3312668 0xaa265c 0x719d 0x2685) 
libc++abi.dylib: terminate called throwing an exception"

そして、コードで使用したメソッドアクションは

- ( void ) move {
    [self.navigationController pushViewController:addedviewController animated:YES];
}

また、スクリーンショットを追加しました...ここに画像の説明を入力

4

3 に答える 3

2

スタック上に既にある viewcontroller のインスタンスを追加することはできません。addedViewController インスタンスを取得するまで、コントローラーをスタックからポップしないのはなぜですか?

于 2013-02-14T14:12:53.703 に答える
0

を使用して追加しますViewController

[self presentViewController:yourView animated:YES completion:nil];

削除する

[self dismissViewControllerAnimated:YES completion:nil];
于 2013-02-14T15:14:51.160 に答える
0

別のオブジェクトを作成する場合は?

AddedviewControllerClass *addedviewControllerTemp = [[AddedviewControllerClass alloc] initWithNibName:@"yourXib.xib"];

[self.navigationController pushViewController:addedviewControllerTemp animated:YES];

[addedviewControllerTemp release] //if not ARC
于 2013-02-14T14:06:25.953 に答える