Каков наилучший способ изменить мой UIViewController на UINavigationController - PullRequest
1 голос
/ 16 февраля 2010

Я только что понял, что мой «корневой» viewController должен был быть UINavigationController. Теперь я хочу изменить это на UINavigationController, и просто любопытно, каким будет мой лучший вариант. Я построил это представление и все другие представления, используя IB, если это делает другое.

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

Спасибо

Ответы [ 4 ]

6 голосов
/ 16 февраля 2010

Вы не конвертируете существующий контроллер вида в контроллер навигации.

Хотя UINavigationController является подклассом UIViewController, его задачей является управление другими контроллерами представления, а не управление самими представлениями. Вы не меняете их друг на друга. Вместо этого вы устанавливаете UIViewControllers для управления навигацией.

Чтобы добавить навигацию к проекту в IB, откройте xib и перетащите курсор на UINavigationController. Затем установите свойство rootControlller контроллера навигации на существующий UIViewController.

И все готово.

4 голосов
/ 13 ноября 2013

Вы также можете «встроить» навигационный контроллер, выбрав «View Controller» в IB, затем выберите «Редактор» -> «Вставить» -> «Navigation Controller»

1 голос
/ 16 февраля 2010

UINavigationController имеет отношение «есть» с UIViewController, поэтому вы должны иметь возможность изменять его тип класса в Интерфейсном Разработчике без дополнительных изменений.

1 голос
/ 16 февраля 2010

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

YourRootViewController *rootViewController = [[YourRootViewController] initHoweverYouInitIt];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];

и, возможно, [rootViewController release];, в зависимости от того, как вы собираетесь управлять памятью.

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