#ios #uinavigationcontroller #uitabbarcontroller #presentviewcontroller
#iOS #uinavigationcontroller #uitabbarcontroller #присутствует viewcontroller
Вопрос:
У меня есть вопрос о настройке стекирования viewcontroller. У меня есть приложение с контроллером tabbar. Для каждой страницы вкладки требуется панель навигации, предоставляемая navcontroller на каждой вкладке и в содержимом. Никаких проблем нет. Однако мне нужно представить viewcontroller над панелью вкладок, над вкладками. Я не могу представить viewcontroller на tabbarcontroller (который не является navcon), и я не могу использовать navcons внутри tabcon, так как вкладки будут располагаться сверху.
Итак, я поместил navcon в качестве основного контейнера, я поместил tabbarcon внутрь него. viewcon, который нужно представить, теперь находится поверх всего, но единственная оставшаяся проблема заключается в том, что панель навигации основного контейнера navcon покрывает панели навигации внутри tabbarcon navcons, и мне нужен заголовок на самом верхнем viewcon, который находится над всем.
Есть ли у кого-нибудь более гибкое решение для этого, кроме включения и выключения навигационной панели основного контейнера navcon всякий раз, когда я представляю контроллер просмотра поверх всего?
Ответ №1:
Я определил свойство в AppDelegate
@property (strong, nonatomic) UINavigationController* rootNavController;
который я мог бы использовать для представления ViewController над панелью вкладок, используя метод объекта делегирования, например
self.navController = nil;
LGLoginViewController* loginView = [[LGLoginViewController alloc] initWithNibName:@"LGLoginViewController"bundle:nil];
if (!self.navController) {
self.navController = [[UINavigationController alloc] initWithRootViewController:loginView];
} else {
[self.navController initWithRootViewController:loginView];
}
self.navController.delegate = self;
[self.window.rootViewController presentModalViewController:self.navController animated:NO];
и позже я отключаю контроллер
Комментарии:
1. Да, у меня аналогичная настройка, если не та же самая. Однако это не предлагает более разумного решения, которое решает две задачи: 1) иметь возможность представлять viewcon с панелью навигации поверх tabbarcon 2) не иметь, чтобы эта панель навигации закрывала панели навигации navcons в tabbarcon. Ваше решение выполняет 1), но не объясняет 2)
2. Я думаю, что presentModalViewController также устарел с iOS7
3. я думаю, что ваш второй пункт не имеет смысла для меня, зачем вам такая настройка?
4. Ретро: навигационная панель основного navcon закрывает навигационную панель navcon внутри tabbarcon. Это, очевидно, проблема. Какая часть не имеет смысла?
5. если есть какое-либо действие, которое вы хотите выполнить, то из вашего представленного modelViewController вы можете создать такой же заголовок с кнопкой навигации.