добавить два контроллера навигации к одному элементу панели вкладок - PullRequest
2 голосов
/ 10 марта 2011

Я хочу, чтобы 2 контроллера навигации были присоединены к одному элементу панели вкладок.

По сути, идея состоит в том, чтобы иметь 2 представления на одном элементе вкладки, и должна быть панель навигации для нажатия и всплывающих окон.(аналогично приложению настроек в iPad).

отредактировано ======

С левой стороны будет выглядеть View с собственным навигационным контроллером и с правой стороныесть другой View с собственным навигационным контроллером (или другим пользовательским интерфейсом) для выполнения Push Pop.

Я знаю, как прикрепить 1 навигационный контроллер к одному элементу панели вкладок.

Отредактировано для ModalView Issue : - благодаря реализации кода conmulligan все работает как свойство.Но если я пытаюсь отобразить какой-нибудь ModalViewController в режиме lansdscape и когда я пытаюсь закрыть этот ModalView, панель навигации FirstViewController становится портретной (вместе с ее представлением), а панель навигации SecondViewController остается пейзажной (у нее это должно быть).Это происходит только в устройстве, а не в симуляторе.

Ниже приведен мой Код представления ModalViewController.

ModalTableViewController *modalTableViewController = [[ModalTableViewController alloc]initWithNibName:@"ModalTableViewController" bundle:[NSBundle mainBundle]]; 
UINavigationController *localNavigationViewController = [[UINavigationController alloc] initWithRootViewController:modalTableViewController];
localNavigationViewController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:localNavigationViewController animated:YES];
[modalTableViewController release];
[localNavigationViewController release];

Для увольнения ModalViewCntroller я делаю это следующим образом: -

[self dismissModalViewControllerAnimated:YES]; 

В ожидании ваших ответов. enter image description here

1 Ответ

4 голосов
/ 12 марта 2011

Один из способов - создать подкласс UIViewController, содержащий два контроллера навигации, и добавить его к UITabBarController. Вот как вы можете создать и расположить навигационные контроллеры в методе UIViewController s -viewDidLoad:

FirstViewController *firstViewController = [[FirstViewController alloc] init];
UINavigationController *firstNavigationController = [[UINavigationController alloc] initWithRootViewController:firstViewController];
[firstViewController release];

SecondViewController *secondViewController = [[SecondViewController alloc] init];
UINavigationController *secondNavigationController = [[UINavigationController alloc] initWithRootViewController:secondViewController];
[secondViewController release];

firstNavigationController.view.frame = CGRectMake(0.f, 0.f, 320.f, self.view.frame.size.height);
firstNavigationController.view.autoresizingMask = UIViewAutoresizingFlexibleHeight;

secondNavigationController.view.frame = CGRectMake(321.f, 0.f, self.view.frame.size.width - 321.f, self.view.frame.size.height);
secondNavigationController.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth |
                                                   UIViewAutoresizingFlexibleRightMargin;

[self.view addSubview:firstNavigationController.view];
[self.view addSubview:secondNavigationController.view];

Это более или менее то, как UISplitViewController работает под капотом.

Редактировать: вам может понадобиться добавить следующий код, чтобы убедиться, что он правильно расположен:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated];
    [firstNavigationController viewWillAppear:animated];
    [secondNavigationController viewWillAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated];
    [firstNavigationController viewWillDisappear:animated];
    [secondNavigationController viewWillDisappear:animated];
}

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated];
    [firstNavigationController viewDidAppear:animated];
    [secondNavigationController viewDidAppear:animated];
}

- (void)viewDidDisappear:(BOOL)animated { 
    [super viewDidDisappear:animated];
    [firstNavigationController viewDidDisappear:animated];
    [secondNavigationController viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...