我对以下代码感到有点困惑。如果我注释掉第二个语句,它会成功显示视图:
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中添加了一个不同的视图控制器,但不是这个。有什么可以让它认为它是同一个?
答案 0 :(得分:2)
delegate.navController.viewControllers = [NSArray arrayWithObject:aViewController];
[delegate.navController pushViewController:aViewController animated:YES];
第一行将aViewController设置为navController唯一的控制器。第二行再次将aViewController推送到navController所以是的,难怪你得到它两次。根据你想做的事情,抛弃这两行中的一条。
如果你想在navController上将aViewController设置为仅控制器,请保留第一行。
如果你想将aViewController作为新控制器推送到navController,请保留第二行。