присутствует верхний viewcontroller над tabbarcontroller в navcontroller

#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 вы можете создать такой же заголовок с кнопкой навигации.