Ios6 ECSlidingViewController,无法关闭菜单

Ios6 ECSlidingViewController,无法关闭菜单,ios6,ecslidingviewcontroller,Ios6,Ecslidingviewcontroller,我使用ECSlidingViewController作为我的菜单,我有一个初始控制器、菜单、主页和登录页。 在初始视图控制器中,如果用户经过身份验证,他们将看到主页,否则我将显示登录对话框。(使用self topViewController) 一切似乎都很好,我的问题是,当我在主视图控制器 如果我点击菜单图标(我是通过编程添加的),菜单就会显示出来,但是如果我再次点击关闭它,什么都不会发生,菜单仍然是可见的 我添加了一个NSLog,我可以看到我调用了正确的方法 - (IBAction)rev

我使用ECSlidingViewController作为我的菜单,我有一个初始控制器、菜单、主页和登录页。 在初始视图控制器中,如果用户经过身份验证,他们将看到主页,否则我将显示登录对话框。(使用self topViewController)

一切似乎都很好,我的问题是,当我在主视图控制器

如果我点击菜单图标(我是通过编程添加的),菜单就会显示出来,但是如果我再次点击关闭它,什么都不会发生,菜单仍然是可见的

我添加了一个NSLog,我可以看到我调用了正确的方法

- (IBAction)revealSidebar
{
 NSLog(@"reveal ");
    [self.slidingViewController anchorTopViewTo:ECRight];

}
然而,菜单并没有隐藏自己

附上了一些截图来了解这个想法


NSLog(@“此处”)

ECSlidingViewController发布以下通知(以及其他通知):

您可以注册以接收这些通知,然后实现如下处理程序方法:

- (void)handleMenuDidShowNotification:(NSNotification *)notification
{
    [self.menuItem setAction:@selector(closeMenu:)];
}

- (void)handleMenuDidHideNotification:(NSNotification *)notification
{
    [self.menuItem setAction:@selector(openMenu:)];
}

- (void)closeMenu:(id)sender
{
    [self.slidingViewController anchorTopViewTo:ECRight];
}
- (void)openMenu:(id)sender
{
    [self.slidingViewController resetTopView];
}

尝试升级到适当版本的
ECSlidingViewController
。问这个问题时使用的版本有设置手势太晚的问题。此问题已在1.0.1版中修复。

My菜单项(图标)链接到RevelSidebar操作,如上所示。如何向同一按钮添加两个操作,一个显示菜单,一个隐藏菜单?本教程只使用了RevelAsidebar,效果很好,唯一的区别是我的例子中的图标不是拖放的,而是通过编程创建的。谢谢你的帮助!见下面我的答案。Call setAction:当您收到我提到的通知时,在您的工具栏按钮项上。啊!我得到了它!让我试试。在尝试你提出的答案之前,我刚刚发现了一些东西。在我的家庭控制器中,我有一个指向外部网站的链接,我使用UIWebView来显示该网站。在该viewcontroller中,有一个后退按钮,用于取消当前UIWebView并将用户带到主控制器。我注意到,在webview被取消后,菜单工作得非常好。只有当我关闭视图控制器时才会发生这种情况,如果我没有单击任何链接,当我单击菜单图标时,菜单会从左侧滑动,但我无法关闭它。奇怪。我不知道为什么会发生这种情况,但我认为,你会希望以任何一种方式交换你的工具栏按钮项的动作。
- (void)handleMenuDidShowNotification:(NSNotification *)notification
{
    [self.menuItem setAction:@selector(closeMenu:)];
}

- (void)handleMenuDidHideNotification:(NSNotification *)notification
{
    [self.menuItem setAction:@selector(openMenu:)];
}

- (void)closeMenu:(id)sender
{
    [self.slidingViewController anchorTopViewTo:ECRight];
}
- (void)openMenu:(id)sender
{
    [self.slidingViewController resetTopView];
}