【问题标题】:How to disable pan mode for certain view controllers in the MFSideMenu class?如何禁用 MFSideMenu 类中某些视图控制器的平移模式?
【发布时间】:2017-09-19 14:09:38
【问题描述】:

我在我的项目中使用来自github link 的 MFSideMenu。它正在工作,但是我想在某个视图控制器中禁用它。

我在视图控制器中添加了这个,但它并没有禁用 panMode:

#import "MFSideMenuContainerViewController.h"

-(void) viewWillAppear:(BOOL)animated {

    MFSideMenuContainerViewController *sideMenu = [[MFSideMenuContainerViewController alloc] init];

    sideMenu.panMode = 0;

}

然后我的计划是在 viewDidDisappear 方法中重新启用 panmode。

MFSideMenuContainerViewController.m 文件中的仅供参考,如果我将 self.panMode = 0; 添加到 - (void)setDefaultSettings {self.panMode = 0;},它确实会禁用菜单平移,除非它会为整个应用程序禁用它。

我一定没有正确引用 MFSideMenuContainerViewController 属性 panmode。

在我的 AppDelegate 中:

.h

@property (nonatomic, strong) MFSideMenuContainerViewController *container;

.m

  MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
                                                    containerWithCenterViewController:self.navController
                                                    leftMenuViewController:nil
                                                    rightMenuViewController:rightSideMenuController];

    self.window.rootViewController = container;

感谢您的帮助

【问题讨论】:

  • 在 .m 文件中你不应该定义新的容器变量。而不是这样做使用 self.container 并分配对象。之后将 self.container 设置为 rootViewController。在下面检查我的答案。

标签: iphone ios objective-c uiviewcontroller


【解决方案1】:

您可以在viewWillAppear 中使用它。

[self.menuContainerViewController setPanMode:MFSideMenuPanModeNone];

【讨论】:

  • 仅在 viewWillAppear 方法中工作正常。在 viewDidLoad 方法中不起作用。
【解决方案2】:

有四种不同的 MFSideMenuPanMode。

你可以试试下面的语句。

在 AppDelegate.h 中

@property (strong, nonatomic) MFSideMenuContainerViewController *container;

在 AppDelegate.m - didFinishLaunchingWithOptions 方法中

 self.container = [MFSideMenuContainerViewController
                                                containerWithCenterViewController:[self navigationController]
                                                leftMenuViewController:leftMenuViewController
                                                rightMenuViewController:rightMenuViewController];

在您的视图控制器 - viewWillAppear 方法中。

AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
delegate.container.panMode = MFSideMenuPanModeNone;

【讨论】:

  • 我试过了。与“panMode = 0;”相同当我直接在 MFSideMenuContainerViewController.m 中更改它而不是在其他视图控制器中更改它时,它可以工作。谢谢你的帖子。
  • 即使您在不同的视图控制器中,您不能从 AppDelegate 获取对“MFSideMenuContainerViewController”对象的引用并分配此 panMode 吗?
  • 我在 AppDelegate 类型的对象上找不到“容器”。那个物体应该在那里吗?没有那个菜单可以正常工作。我只是无法从另一个 vc 禁用它。再次感谢!
  • 我的设置完全一样。我在上面编辑了我的代码。这条线会不会把它扔掉。 self.window.rootViewController = 容器;在 AppDelegate 中是它在其他 vc 中不起作用的原因吗?
  • 你需要那个声明。但它应该是这样的。 self.window.rootViewController = self.container;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
相关资源
最近更新 更多