1

我在我的应用程序中使用MVYSideMenu,我可以使用 MVYSideMenu 的“changeContentViewController”呈现新控制器,但它呈现新控制器,所以从这里我想回到我的根目录(HomeViewController),所以我对此做了很多研究,但不能t 找到解决方案。

因此,如果有人知道解决方案,请帮助我。提前致谢。

4

1 回答 1

0

rootViewController当您尝试从中打开任何视图时,MVYSideMenu正在制作。如果您正在制作rootViewController,那么您将无法从中pop获得。

因此,如果您想返回,则必须返回Push该视图,而不是制作 rootViewController。

我认为,现在您正在使用以下代码打开侧菜单的任何控制器:

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];

所以请使用下面的代码而不是上面的代码。这里 nav 是UINavigationControllerin的对象AppDelegate

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

因此,您可以从侧面菜单推送任何视图。现在试着弹出这个视图。我相信你可以在使用后弹出这个视图。

请确保,如果您这样做,则可能存在内存泄漏。因为所有时候 viewControllers 都在添加到导航控制器。所以我的建议是,如果你能说服你的客户,就不要这样做。:) 否则,您必须制作自己的侧面菜单。

编辑 :-

是的,我们可以启用/禁用某些视图控制器的侧边菜单。请将以下方法添加到MVYSideMenuController.m文件中。viewWillAppear并从您的视图控制器中调用此方法。

- (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;
}

您可以轻松调用此方法LocalNotifications。可能addGestures已经在那里了。removeGestures您可以在控制器中需要时通过调用方法来删除手势。但不要忘记addGestures删除手势后何时需要侧边菜单。

希望,这就是你要找的。任何问题都可以回复我。:)

于 2016-08-02T10:34:42.797 回答