2015-03-05 16 views
5

Sto usando MMDrawerController nella mia applicazione da this collegamento
ho impostato la ViewController radici nella AppDelegate questo modo:Utilizzo di MMDrawerConroller come disabilitare la rotazione alcuni 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]; 

Voglio disattivare la rotazione in una specifica ViewController, che io chiamo i metodi e sono mai chiamato e la vista ancora ruotare:

// ViewController.m 

-(BOOL)shouldAutorotate {    
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

Credo che il problema sta venendo dal RootViewController che è la MMDrawerViewController!
Ho già controllato this e this e this ma nulla ha aiutato.

risposta

3

Se il problema esiste ancora quindi sottoclasse UINavigationController e implementare

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

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

Penso UINavigationController controlla automaticamente, ma nel caso in cui dont si può creare una sottoclasse.

+0

La combinazione delle due risposte ha funzionato. grazie mille, accetterò la tua risposta – sazz

3

in MMDrawerController esegue l'override seguendo metodi come qualcosa.

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

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

Prova questa, se non di successo, allora avete bisogno di sottoclasse UINavigationController e sovrascrivere questi metodi allora le vostre impostazioni di orientamento viewcontrollers sarebbero passati in gerarchia.

+0

Ho aggiunto questi metodi in MMDrawerController, non esistevano prima. E nel mio ViewController non riesco ancora a disabilitare la rotazione. – sazz

+0

ora dovresti implementare questi metodi in tutti i tuoi controller di visualizzazione per bloccare e sbloccare le rotazioni per loro. Se il problema persiste, potresti dover sottoclasse navigationcontroller e utilizzare questi metodi inviando il formato per i metodi navigationcontroller – Zahid

+0

Ho implementato questo nel mio ViewController, quando la vista è pronta, vengono chiamati shouldAutorotate e SupportInterfaceOrientations del ViewController, quindi entrambi i metodi sono chiamati in MMDrawerController, lo ruotano ancora – sazz

Problemi correlati