Панель вкладок не может получить доступ к Navigationcontroller
-
05-07-2019 - |
Вопрос
У меня есть приложение navigationController.
Я выдвигаю панель вкладок на представление. Вкладки рабочие, название изменено, отлично. Теперь на одной из моих вкладок есть список, и я пытаюсь создать ссылку на дочернюю страницу на панели вкладок:
NextViewController *nextController = [[NextViewController alloc] initWithNibName:@"ProfileDetailController" bundle:nil];
[self.navigationController pushViewController:nextController animated:YES];
Ничего не происходит. Конечно это работает:
self.view = nextController.view;
Я хочу иметь возможность переходить на эту подстраницу в моей вкладке И изменять кнопки навигации. Это возможно?
Решение
Похоже, вы помещаете UITabBarController
в UINavigationController
? От Документация Apple , вы не можете вставить контроллер панели вкладок в контроллер навигации. Р>
Что вы, вероятно, хотите сделать, так это наоборот: иметь контроллер панели вкладок с UINavigationController
s в качестве элементов вкладки. Это похоже на интерфейс, скажем, приложения iPod или приложения «Телефон».
Другие советы
Я согласен с Алексом - TabBarController внутри контроллера навигации не выглядит хорошим шаблоном пользовательского интерфейса.
В любом случае, чтобы ответить на ваш вопрос: пытались ли вы получить доступ к контроллеру навигации через контроллер панели вкладок?
self.tabBarController.navigationController
Я не уверен, что это работает, но вы можете попробовать.
Я думаю, что нашел простое решение.
В вашем классе, куда вы хотите отправить представление, объявите локальный UINavigationController
как свойство:
@interface userMenu : UIViewController {
UINavigationController *navigationController;
}
@property (nonatomic, retain) UINavigationController *navigationController;
Не забудьте синтезировать его.
В вашем классе для tabBarController
:
NSArray *viewControllersArray = [self.tabBarController viewControllers];
userMenu *childUserMenu = (userMenu*) [viewControllersArray objectAtIndex:0];
childUserMenu.navigationController = self.navigationController;
После этого вы можете выполнить [self.navigationController pushViewController: nextController animated: YES];