2015-03-05 11 views
5

Używam MMDrawerController w mojej aplikacji z this linku
ustawić ViewController korzeniowy w AppDelegate ten sposób:Korzystanie z MMDrawerConroller jak wyłączyć rotację jest niektórych ViewControllers?

self.leftDrawerController = [[LeftDrawerViewController alloc] init]; 

    self.homeViewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; 
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.homeViewController]; 

    // DrawerViewController setup 
    self.drawerController = [[MMDrawerController alloc] 
          initWithCenterViewController:self.navigationController 
          leftDrawerViewController:self.leftDrawerController]; 
    [self.drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll]; 
    [self.drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll]; 

    [self.drawerController setDrawerVisualStateBlock:^(MMDrawerController *drawerController, MMDrawerSide drawerSide, CGFloat percentVisible) { 
     MMDrawerControllerDrawerVisualStateBlock block; block = [[DrawerVisualStateManager sharedManager] drawerVisualStateBlockForDrawerSide:drawerSide]; 
     if (block) { 
      block(drawerController, drawerSide, percentVisible); 
     } 
    }]; 

    [self.window setRootViewController:self.drawerController]; 

Chcę wyłączyć obrót w określonym ViewController wzywam tych metod i są one nigdy nie zadzwonił i widok nadal obracać:

// ViewController.m 

-(BOOL)shouldAutorotate {    
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

Myślę, że problem jest pochodząca z rootViewController który jest MMDrawerViewController!
Sprawdziłem już: this i this i this, ale nic nie pomogło.

Odpowiedz

3

Jeśli problem nadal istnieją następnie podklasy UINavigationController i wdrożenie

-(BOOL)shouldAutorotate {    
    return [self.topViewController shouldAutorotate]; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
    return [self.topViewController supportedInterfaceOrientations]; 
} 

myślę UINavigationController steruje automatycznie, ale w przypadku, gdy nie można podklasy.

+0

Połączenie twoich dwóch odpowiedzi zadziałało. wielkie dzięki, przyjmuję twoją odpowiedź – sazz

3

w MMDrawerController zastąpić następujące metody coś jak.

-(BOOL)shouldAutorotate {    
    return [self.centerViewController shouldAutorotate]; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
    return [self.centerViewController supportedInterfaceOrientations]; 
} 

Spróbuj tego, jeśli nie uda to trzeba podklasy UINavigationController i zastąpić te metody następnie ustawienia orientacji viewcontrollers byłyby przekazywane w hierarchii.

+0

Dodałem te metody do MMDrawerController, wcześniej nie istniały. I w moim ViewController nadal nie mogę wyłączyć rotacji. – sazz

+0

Teraz będziesz musiał wdrożyć te metody we wszystkich kontrolerach widoku, aby zablokować i odblokować dla nich obroty. Jeśli problem nadal istnieje, to możesz potrzebować podklasy navigationcontroller i użyć tych metod wysyłając ci format dla metod controlcontroller – Zahid

+0

Zaimplementowałem to w moim ViewController, gdy widok jest lunched, to shouldAutorotate i supportedInterfaceOrientations z ViewController są nazywane first, wtedy te obie metody są wywoływane w MMDrawerController, nadal się obracają – sazz

Powiązane problemy