2016-09-30 27 views
0

我們在應用程序中以編程方式添加了UITabBarController。我們增加了3的UINavigationController在UITabViewController像下面的代碼:修復UIViewController的方向

self.tabBarController = [[UITabBarController alloc] init]; 
self.tabBarController.tabBar.tintColor = [UIColor colorWithRed:36.0/255.0 green:179.0/255.0 blue:125.0/255.0 alpha:1.0]; 

FirstViewController *VC1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; 
UINavigationController *navControllerFirst = [[UINavigationController alloc]initWithRootViewController:VC1]; 
UITabBarItem *item1 = [[UITabBarItem alloc] initWithTitle:@"First" image:[UIImage imageNamed:@"First"] tag:0]; 
navControllerFirst.tabBarItem = item1; 

SecondViewController *VC2 = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil]; 
UINavigationController * navControllerSecond = [[UINavigationController alloc]initWithRootViewController:VC2]; 
UITabBarItem *item2 = [[UITabBarItem alloc] initWithTitle:@"Second" image:[UIImage imageNamed:@"Second"] tag:0]; 
navControllerSecond = item2; 

ThirdViewController *callTransactionsNew=[[ThirdViewController alloc]initWithStyle:UITableViewStyleGrouped]; 
UINavigationController * navControllerThird = [[UINavigationController alloc]initWithRootViewController:callTransactionsNew]; 
UITabBarItem *item3 = [[UITabBarItem alloc] initWithTitle:@"Third" image:[UIImage imageNamed:@"Third"] tag:0]; 
navControllerThird = item3; 

NSArray* controllers = [NSArray navControllerFirst, navControllerSecond, navControllerThird,nil]; 
self.tabBarController.viewControllers = controllers; 
self.tabBarController.delegate = self; 
self.tabBarController.view.frame = self.view.frame; 

[self.tabBarController willMoveToParentViewController: self]; 
[self addChildViewController: self.tabBarController]; 
[self.view addSubview: self.tabBarController.view]; 
[self.tabBarController didMoveToParentViewController:self]; 

在didSelectViewController中的TabBar我們增加了下面的代碼。如果用戶在任何其他選項卡中處於橫向模式,然後他點擊第一個選項卡,此代碼將FirstViewController旋轉到縱向模式。

[UIViewController attemptRotationToDeviceOrientation]; 
if([theTabBarController.viewControllers indexOfObject:viewController] == 0) { 
    SEL sel = NSSelectorFromString(@"setOrientation:"); 
    if([[UIDevice currentDevice] respondsToSelector:sel]) { 
     #pragma clang diagnostic push 
     #pragma clang diagnostic ignored "-Warc-performSelector-leaks" 
     [[UIDevice currentDevice] performSelector:sel withObject:(__bridge id)((void*)UIInterfaceOrientationPortrait)]; 
     #pragma clang diagnostic pop 
    } 
} 

我們的要求:

我們要FirstViewController的方向修正只人像。它不應該旋轉。其餘的UIViewControllers可以橫向和縱向旋轉。 任何人都可以請幫忙嗎?

+0

是,我們是。必須有某種方式。我看到其他應用程序正在這樣做。 – varun

回答

0

在視圖控制器實現這一點,你要避免旋轉上

-(BOOL)shouldAutorotate 
{ 
    return NO;  
}