我对以下代码有些困惑。如果我注释掉第二条语句,它将成功显示该视图:
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
我在应用程序委托中添加了一个不同的视图控制器,但没有添加。是什么让它认为它是同一个人?
最佳答案
delegate.navController.viewControllers = [NSArray arrayWithObject:aViewController];
[delegate.navController pushViewController:aViewController animated:YES];
第一行集的aViewController是navController的唯一控制器。第二行再次将aViewController推送到navController,是的,难怪您会两次。根据您要执行的操作,将这两条线之一抛开。
如果要将aViewController设置为navController上的唯一控制器,请保留第一行。
如果要将aViewController推送为navController上的新控制器,请保留第二行。