Вопрос

У меня есть приложение 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];

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top