Iphone UIViewController для контроллера UINavigation программно - PullRequest
0 голосов
/ 25 июня 2010

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

1) Появляется только серый экранИЛИ ЖЕ2) Я получаю нечто, похожее на контроллер навигации, добавленное к контроллеру представления, вместо того, чтобы быть моим контроллером навигации из XIB, оно является просто общим ... даже если я загрузил из XIB.Как ни странно, он всегда сдвигается на 25 пикселей вниз и слегка обрезается.

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

Любая помощь очень ценится !!!!

1 Ответ

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

Вместо того, чтобы UINavigationController был дочерним по отношению к какому-либо другому контроллеру представления, сделайте UINavigationController самим корневым контроллером. Контроллер навигации является одним из специальных контроллеров представления «контейнер», и он, как правило, хочет владеть всем экраном и находиться в корне иерархии контроллеров (за исключением определенных обстоятельств).

Попробуйте что-то вроде этого:

UINavigationController * rootNavController = [[UINavigationController alloc] initWithRootViewController:myRootControllerInTheNavController];
[window addSubview:[rootNavController view]];

Который будет скрывать любые существующие виды с помощью контроллера Nav (эти существующие вещи будут все еще там, когда вы -removeFromSuperview видите контроллер Nav). Ядерная опция состоит в том, чтобы установить свойство rootViewController вашего UIWindow с помощью контроллера nav, но из вашего комментария звучит, что это может быть не то, что вы хотите сделать здесь.

Возможно, более чистый подход: если он выполняет то, что вы хотите, я полагаю, вы также можете взять свой контроллер nav и представить его модально (см. Документацию для uiviewcontroller) из любого текущего контроллера представления. Установите переход соответствующим образом, и пока вы находитесь в стеке навигации, контроллер навигации будет виден.

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