Как заменить RootViewController в «Навигационном приложении» - PullRequest
15 голосов
/ 29 апреля 2011

У меня есть приложение, которое использует шаблон «навигационное приложение» в XCode.

Теперь я хочу изменить его так, чтобы первое загружаемое представление представляло собой обычный (пользовательский) UIView, и еслипользователь нажимает определенную кнопку, я помещаю оригинальный RootViewController на NavigationController.

Я понимаю, что где-то кто-то вызывает это с моим RootViewController:

- (id)initWithRootViewController:(UIViewController *)rootViewController

Я хочу знать, как заменитьспор с моим новым классом.

Ответы [ 3 ]

23 голосов
/ 29 апреля 2011

если вы хотите заменить корневой контроллер вида вашего стека навигации, вы можете заменить первый объект его массива контроллеров вида как -

NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:[self.navigationController viewControllers]];

NewViewController *nvc = [[NewViewController alloc] init];
[viewControllers replaceObjectAtIndex:0 withObject:nvc];
[self.navigationController setViewControllers:viewControllers];
5 голосов
/ 01 апреля 2013

^ Это все способы сделать это программно. Это круто. Но я использую конструктор интерфейса и раскадровки в XCode, так что это простой и быстрый способ добавить новый контроллер представления:

  • Открыть раскадровку
  • Добавьте новый контроллер представления в раскадровку, перетащив его из списка объектов (правая панель инструментов внизу)
  • Удерживая нажатой клавишу CONTROL, щелкните и перетащите курсор от середины контроллера навигации (должен быть пустым и серым) к новому новому виду белого цвета.
  • Во всплывающем окне выберите Selation Segue: Root View Controller (должно быть ниже обычных параметров push / modeal / custom, которые вы, вероятно, видели раньше)

Тад! Наслаждайтесь вашим новым контроллером root view, не тратя время на программирование.

2 голосов
/ 29 апреля 2011

Загляните в основной файл делегата приложения .m и найдите метод

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Внутри будет такая строка

self.window.rootViewController = self.navigationController;

Вы можете создать экземпляр контроллера просмотра с разным видом и назначить его на rootViewController

...