Загрузите UINavigationController как подпредставление из UIViewController - PullRequest
7 голосов
/ 01 мая 2009

Я новичок в разработке для iPhone. Я хочу создать приложение, в котором сначала будет UIViewController, в котором будет кнопка. Теперь при нажатии на кнопку она должна загрузить контроллер UINavigation. Вот как я подхожу:

  1. я создал класс UIViewController, где я взял

    -(IBAction) PressMeFunc:(id) sender
    

    для кнопки, которую нужно нажать.

  2. Затем я создал xib-файл UIView. Я сделал необходимые шаги в IB.

  3. Затем в AppDelegate я добавил экземпляр ViewController в качестве подпредставления окна.

До этого все нормально.

Далее, как загрузить навигационный контроллер нажатием кнопки?

Я знаю, как построить проект navigationController из оконного приложения, но мне трудно работать с NavigationController в качестве подпредставления UIView.

Ваша помощь очень ценится.

Ответы [ 2 ]

8 голосов
/ 01 мая 2009

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

Вот документация Apple для программной настройки NavigationController.

Код будет выглядеть примерно так (из документа Apple):

GroupsController *groupsController = [[[GroupsController alloc] initWithNibName:nil bundle:nil] autorelease];
UINavigationController *navigationController =
[[UINavigationController alloc] initWithRootViewController:groupsController];

Теперь, когда вы создали NavigationController и добавили в него свой первый viewcontroller, вам нужно перейти к нему. Вы можете сделать это с помощью CATransitions или

[myViewController presentModalViewController: navigationController];
5 голосов
/ 04 июля 2011

Не следует добавлять представление UIViewController (включая навигацию) в качестве подпредставления к представлению, управляемому другим контроллером представления.

Вот соответствующее прочтение: http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

В вашем случае вы можете удалить представление viewcontroller из окна , а затем добавить представление контроллера навигации в окно.

[viewController.view removeFromSuperview];
[window addSubview:navigationController.view];

Вы также можете добавить его в качестве контроллера модального представления, как было предложено здесь, или вы можете сделать первый контроллер представления навигационным контроллером, и в стек этого контроллера навигации вставьте второй контроллер навигации:

[navigationController pushViewController:secondNavigation animated:NO];

Редактировать: хех только что заметил, я отвечаю на вопрос 09

Редактировать # 2: Это может быть неуместно для iOS 5 и того, что они добавили в локализацию UIViewController, все еще не было возможности проверить это, но если вы читаете этот ответ, вы можете захотеть .

...