2016-08-02 1 views
1

J'utilise MVYSideMenu dans mon application et je peux présenter un nouveau contrôleur en utilisant "changeContentViewController" de MVYSideMenu mais il présente un nouveau contrôleur donc d'ici je veux revenir à ma racine (HomeViewController) donc j'ai fait beaucoup de recherches sur ce sujet, mais n'a pas pu trouver de solution.MVYSideMenu pop to root viewcontroller

Donc, si quelqu'un connaît la solution s'il vous plaît aidez-moi. Merci d'avance.

Répondre

0

MVYSideMenu fait rootViewController, lorsque vous essayez d'ouvrir une vue à partir de cela. Si vous faites rootViewController, alors vous ne pouvez pas pop à partir de cela. Par conséquent, si vous voulez revenir en arrière, vous devez afficher Push au lieu de créer rootViewController.

Je pense, en ce moment vous utilisez le code suivant pour ouvrir un contrôleur pour le menu latéral:

ChildViewController *contentVC = [[ChildViewController alloc] initWithNibName:@"ChildViewController" bundle:nil]; 
appDelegate.nav = [[UINavigationController alloc] initWithRootViewController:contentVC]; 
appDelegate.nav.navigationBarHidden=TRUE; 
[[self sideMenuController] changeContentViewController:appDelegate.nav closeMenu:YES]; 

Alors S'il vous plaît utiliser le code suivant au lieu de code ci-dessus. Ici nav est l'objet de UINavigationController en AppDelegate.

ChildViewController *contentVC = [[ChildViewController alloc] initWithNibName:@"ChildViewController" bundle:nil]; 
[appDelegate.nav pushViewController:contentVC animated:YES]; 
[[self sideMenuController] changeContentViewController:appDelegate.nav closeMenu:YES]; 

Vous pouvez donc appuyer sur n'importe quelle vue du menu latéral. Et maintenant, essayez d'afficher cette vue. Je suis sûr que vous pouvez pouvoir afficher cette vue après l'avoir utilisée.

Assurez-vous que, si vous faites cela, alors il peut y avoir une fuite de mémoire. Parce que les viewControllers sont toujours ajoutés au contrôleur de navigation. Donc, ma suggestion est, ne faites pas cela, si vous pouvez convaincre votre client. :) Sinon, vous devez créer votre propre menu.

EDIT: -

Oui, nous pouvons en mesure d'activer/désactiver le menu latéral pour certains contrôleurs de vue. Veuillez ajouter les méthodes suivantes dans le fichier MVYSideMenuController.m. Et appelez cette méthode de viewWillAppear de vos viewControllers.

- (void)addGestures { 

    if (!_panGesture) { 
     _panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)]; 
     [_panGesture setDelegate:self]; 
    // [self.view addGestureRecognizer:_panGesture]; 
    } 

    if (!_tapGesture) { 
     _tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleMenu)]; 
     [_tapGesture setDelegate:self]; 
     [self.view addGestureRecognizer:_tapGesture]; 
    } 
} 

- (void)removeGestures{ 
    [self.view removeGestureRecognizer:_panGesture]; 
    _panGesture = nil; 
} 

Vous pouvez facilement appeler cette méthode LocalNotifications. Peut être addGestures déjà là. Vous pouvez supprimer des gestes en appelant la méthode removeGestures lorsque vous en avez besoin dans votre contrôleur. Mais n'oubliez pas addGestures lorsque vous avez besoin de menu latéral après avoir supprimé les gestes.

J'espère que c'est ce que vous cherchez. Toute préoccupation me revient. :)

+0

Merci pour votre réponse. Mais je veux revenir en arrière à partir du contrôleur de vue enfant. Donc, si vous connaissez un autre tiroir qui fonctionne comme MVYSideDrawer, veuillez me le suggérer. Merci. –

+0

Vérifiez simplement ma réponse mise à jour. –

+0

Tout simplement parce que lorsque je montre un menu ChildViewController à partir de My Side, je veux une option pop (bouton retour) pour revenir au contrôleur de la vue racine et il semble que ce ne soit pas possible en utilisant MVYSideMenu. –