2015-04-10 1 views
1

Я использовал AMSSlideMenuController создать свой основной VCИзменение ориентации только на одном View Controller, замок другие в портретном режиме (Xcode 6.2)

@interface LoggedIn_MainVC : AMSlideMenuMainViewController 
@end 

И В App делегатом создать его с помощью:

//start first vc 
    self.mainVC = [[LoggedIn_MainVC alloc] init]; 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

В LoggedIn_MainVC, я создаю левое и правое меню как с помощью AMSSlideMenuTableViewController, например, так:

@interface LeftMenuVC : AMSlideMenuLeftTableViewController 

и они оба экземпляра как и в LoggedIn_MainVC:

*******************************/ 
self.leftMenu = [[LeftMenuVC alloc] initWithNibName:@"LeftMenuVC" bundle:nil]; 
self.rightMenu = [[RightMenuVC alloc] initWithNibName:@"RightMenuVC" bundle:nil]; 
/******************************* 

В левом меню, у меня есть StartPageView, VideoPageView и SettingsView. Я хочу заблокировать все другие виды в портретном режиме, кроме VideoView. LeftMenuVC:

#pragma mark - TableView Delegate 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
- {UINavigationController *nvc; 

UIViewController *rootVC; 
switch (indexPath.row) { 
    case 0: 
    { 
     rootVC = [[VCLoggedIn_StartPage alloc] initWithNibName:@"VCLoggedIn_StartPage" bundle:nil]; 
    } 
     break; 
    case 1: 
    { 
     rootVC = [[VCLoggedIn_Levels alloc] initWithNibName:@"VCLoggedIn_Levels" bundle:nil]; 
    } 
     break; 
    case 2: 
    { 
     rootVC = [[VCLoggedIn_Videos alloc] initWithNibName:@"VCLoggedIn_Videos" bundle:nil]; 
    } 
     break; 
    case 3: 
    { 
     rootVC = [[VCLoggedIn_Settings alloc] initWithNibName:@"VCLoggedIn_Settings" bundle:nil]; 
    } 
     break; 

    default: 
     break; 
} 
nvc = [[UINavigationController alloc] initWithRootViewController:rootVC]; 

[self openContentNavigationController:nvc]; 
} 

Я использую в AppDelegate

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; 
} 

и VideoView:

-(BOOL)shouldAutorotate { 
return YES; 
} 
- (NSUInteger) supportedInterfaceOrientations 
{ 
return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; 
} 

Для OtherViews:

-(BOOL)shouldAutorotate { 
return YES; 
} 
- (NSUInteger)supportedInterfaceOrientations { 
return UIInterfaceOrientationMaskPortrait; 
} 

Все виды ведут себя одинаково (BO й пейзаж и портрет). Однако я обнаружил, что, когда я ставлю этот режим ориентации в LoggedIn_MainVC (The MainView Controller):

- (NSUInteger)supportedInterfaceOrientations{ 
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; 
} 
- (BOOL)shouldAutorotate 
{ 
return YES; 
} 

Все другие взгляды ведет себя так, как эта функция (supportedInterfaceOrientations) в LoggedInMainVC определен. Когда я перехожу только к UIInterfaceOrientationMaskPortrait, все представления имеют только портретный режим и наоборот. Их собственное определение supportedInterfaceOrientations не работает. Что мне не хватает или что-то не так. Пожалуйста, помогите мне

ответ

0

попробовать

- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { 
    return UIInterfaceOrientationMaskLandscape; 
} 

в videoView, чтобы сделать его ландшафту

+0

спасибо за предложение ... но до сих пор не working..same проблема – pawn

Смежные вопросы