Как заменить 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