Как заменить RootViewController в "Навигационном приложении",

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

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

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

- (id)initWithRootViewController:(UIViewController *)rootViewController

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

Ответы

Ответ 1

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

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

NewViewController *nvc = [[NewViewController alloc] init];
[viewControllers replaceObjectAtIndex:0 withObject:nvc];
[self.navigationController setViewControllers:viewControllers];

Ответ 2

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

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

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

Ответ 3

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

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

Внутри будет строка, подобная этой

self.window.rootViewController = self.navigationController;

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