iOS - NavigationController считает, что дважды нажимает один и тот же контроллер - PullRequest
1 голос
/ 29 августа 2011

Я немного запутался в следующем коде.Если я закомментирую второй оператор, он успешно отображает представление:

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 

Я добавляю другой контроллер представления в делегат приложения, но не этот.Что могло заставить его думать, что это тот же самый?

1 Ответ

2 голосов
/ 29 августа 2011
delegate.navController.viewControllers = [NSArray arrayWithObject:aViewController];

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

Первая строка устанавливает aViewController как единственный контроллер navController. Вторая строка снова переводит aViewController в navController, так что не удивительно, что вы получаете его дважды. В зависимости от того, что вы хотите сделать, отбросьте одну из этих двух строк.

Если вы хотите установить aViewController в качестве единственного контроллера на navController, оставьте первую строку.

Если вы хотите использовать aViewController в качестве нового контроллера в navController, оставьте вторую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...