我在我的应用程序中使用MVYSideMenu,我可以使用" changeContentViewController"来呈现新的控制器。 MVYSideMenu,但它提出了新的控制器,所以从这里我想回到我的根(HomeViewController),所以我做了很多研究,但无法找到解决方案。
所以,如果有人知道解决方案,请帮助我。 提前谢谢。
答案 0 :(得分:0)
MVYSideMenu正在制作rootViewController
。如果您正在制作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是UINavigationController
中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 文件中。并从viewControllers的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
。
希望,这是你正在寻找的。任何关注都会回复给我。 :)