0

在我的项目中,有大约 10 个视图控制器。在其中一个视图控制器中,我在 xib 中添加了一个视图控制器以提供额外的功能(一个实际视图 + 为单个类添加了视图控制器)。当我尝试将 ie.navigate 从其实际视图移动到添加的视图控制器时,第一次它的导航很好,也回到了实际的视图。但是如果我再去那个添加的视图控制器,我的应用程序就会崩溃。这是显示的错误。

"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

如果你创建另一个对象?

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

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

[addedviewControllerTemp release] //if not ARC
于 2013-02-14T14:06:25.953 回答
0

用于添加您的ViewController

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

去除

[self dismissViewControllerAnimated:YES completion:nil];
于 2013-02-14T15:14:51.160 回答