Я предполагаю, что есть другие более простые способы сделать это, но я наконец нашел решение.
Название пятого viewController в TabBarController, единственный
что нужно изменить ориентацию, это "MyNotes"
Внутри SubListViewController.m создается объект TabBarControllerRotate.
tbc = [[TabBarControllerRotate alloc] initWithNibName:nil bundle:nil];
tbc.viewControllers = [NSArray arrayWithObjects:viewController1
, viewController2, viewController3, viewController4, viewController5, nil
tbc.delegate = self;
TabBarController подклассы UITabBarController и включает свойство BOOL
имя bMyNotes.
SubListViewController является UITabBarControllerDelegate
При каждом изменении представления в TabBarController отправляется сообщение, а именно
- (void) tabBarController: (UITabBarController *) tabBarController
didSelectViewController: (UIViewController *) viewController
Поэтому SubListViewController.m содержит этот код:
#pragma mark UITabBarControllerDelegate methods
- (void)tabBarController:(UITabBarController *)tabBarController
didSelectViewController:(UIViewController *)viewController{
BOOL b = (viewController.title == @"MyNotes");
[tbc setBMyNotesTab:b];
//NSLog(@"MyNotesTab == %d", [tbc bMyNotesTab]);
}
Тогда TabBarControllerRotate.m содержит:
- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation {
//NSLog(@"bMyNotesTab is: %d",self.bMyNotesTab);
return ( (interfaceOrientation == UIInterfaceOrientationLandscapeRight
|| interfaceOrientation == UIInterfaceOrientationLandscapeLeft
|| interfaceOrientation == UIInterfaceOrientationPortrait
) && self.bMyNotesTab
);
}