我对以下代码有些困惑。如果我注释掉第二条语句,它将成功显示该视图:

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上的新控制器,请保留第二行。

09-12 07:01