iOS - NavigationController认为它正在推送两次相同的控制器

时间:2011-08-28 23:41:19

标签: ios uinavigationcontroller

我对以下代码感到有点困惑。如果我注释掉第二个语句,它会成功显示视图:

MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

delegate.navController.viewControllers = [NSArray arrayWithObject:aViewController];

[delegate.navController pushViewController:aViewController animated:YES];

[aViewController release];

否则,它崩溃了以下内容:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported 

我在app delegate中添加了一个不同的视图控制器,但不是这个。有什么可以让它认为它是同一个?

1 个答案:

答案 0 :(得分:2)

delegate.navController.viewControllers = [NSArray arrayWithObject:aViewController];

[delegate.navController pushViewController:aViewController animated:YES];

第一行将aViewController设置为navController唯一的控制器。第二行再次将aViewController推送到navController所以是的,难怪你得到它两次。根据你想做的事情,抛弃这两行中的一条。

如果你想在navController上将aViewController设置为仅控制器,请保留第一行。

如果你想将aViewController作为新控制器推送到navController,请保留第二行。