Как реализовать навигацию по нажатию кнопки - PullRequest
0 голосов
/ 28 сентября 2010

В моем проекте впервые использовалась работа с кадрами Three20 для обработки навигации. Но из-за некоторых проблем я должен удалить часть Three20. Поэтому я перепроектировал свое приложение. то, что я пытаюсь сделать, это показать подробный вид, когда пользователь касается кнопки. Я создал новое главное окно, так как не было ни одного ранее. У него нет контроллера навигации. я использовал


DetailViewController * detailViewController = [[DetailViewController alloc] init]; [self.navigationController pushviewController: detailviewController animated: YES]

в событии подкраски. но при запуске приложения ничего не происходит при нажатии кнопки. Никаких предупреждений или ошибок не отображается. Я делал это в других приложениях, но здесь это просто не работает.

1 Ответ

1 голос
/ 28 сентября 2010

Поскольку вы не используете UINavigationController, свойство navigationController вашего UIViewController останется нулевым.С точки зрения компиляции проблем нет, поскольку свойство существует, но компилятор не знает, что свойство останется нулевым, поэтому предупреждения / ошибки не отображаются.

Отправка сообщения объекту nil разрешена вObjective-C, следовательно, код не падает и ничего не делает при запуске.

Если вы хотите, чтобы ваш код работал и работал, вам нужно поместить корневой UIViewController в UINavigationController.Как только UIViewController отображается в UINavigationController, свойство будет автоматически установлено в UINavigationController.

Edit: Вы можете использовать что-то подобное, вместо того, чтобы показывать someController, «инкапсулировать» егоUINavigationController и показать этот контроллер.

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:someController];
...