Контроллеры корневого представления и модальные диалоги - PullRequest
1 голос
/ 11 июня 2010

В пользовательском UIViewController, если у меня есть элемент UINavigationController, который я инициализирую с self в качестве корневого представления, например:

navController = [[UINavigationController alloc] initWithRootViewController:self];

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

Если я инициализирую UINavigationController без установки self в качестве корневого контроллера,

navigationController = [[UINavigationController alloc] init];

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

1 Ответ

1 голос
/ 11 июня 2010

Я никогда не добавлял себя в качестве корневого контроллера

У меня всегда есть какой-то контроллер, который добавляет NavigationController.view к себе. И первый ViewController, который должен отображаться в иерархии навигации, который я затем добавляю как rootViewController. Это просто другое слово для «первой страницы» (в начале все названия могут быть довольно запутанными).

Пример в MyProjectAppDelegate.m:

UITableViewController *startScreen = [[UITableViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:startScreen];
[window addSubview:navController.view];

Вам также не следует смешивать UINavigationController с UITabBarController, если вы хотите иметь панель вкладок в "странице" навигационного контроллера, вы можете создать собственный UITabBarController.

Это покажет вам, как http://github.com/wiredbob/NavTab

(У меня были большие проблемы с пониманием того, как все эти представления / контроллеры встраивались сами, и этот проект действительно имел значение. Можно сказать, что это был код, который я действительно научился программировать для iPhone / Mac с помощью: DD)

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