【问题标题】:Call method before SWRevealViewController is shown显示 SWRevealViewController 之前的调用方法
【发布时间】:2014-05-21 03:56:42
【问题描述】:

我正在使用 SWRevealViewController 插件,它工作得很好,我可以很好地浏览页面。我的问题是,当显示菜单时,您仍然可以与调用菜单的视图上的对象进行交互。我想在显示菜单时从我的视图中禁用按钮。我正在使用此代码分配侧边栏按钮。

_sidebarButton.tintColor = [UIColor colorWithWhite:0.1f alpha:0.9f];
_sidebarButton.target = self.revealViewController;
_sidebarButton.tag=10;
_sidebarButton.action = @selector(revealToggle:);
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

在revealToggle 操作被触发之前,我无法弄清楚如何在我自己的类中调用函数。有什么建议吗?

【问题讨论】:

  • 我相信图书馆有代表会在菜单即将显示和关闭时触​​发。你可以用这些吗?
  • 您可以实现一个SWRevealViewControllerDelegate。查看它的方法。
  • 我已经添加了委托并将方法添加到我的类中,但它们似乎根本没有调用任何委托方法

标签: ios uiviewcontroller swrevealviewcontroller


【解决方案1】:

在 MenuViewController(即后视图控制器)中写入以下内容:

- (void)viewWillAppear:(BOOL)animated {

   [super viewWillAppear:animated];

   [self.revealViewController.frontViewController.view setUserInteractionEnabled:NO];
}

- (void)viewDidDisappear:(BOOL)animated {

   [super viewDidDisappear:animated];

   [self.revealViewController.frontViewController.view setUserInteractionEnabled:YES];
}

然后你可以从这个视图控制器中获取每个子视图。 例如如果frontviewcontroller是UINavigationController,你可以这样做:

UINavigationController *navController = (UINavigationController *)self.revealViewController.frontViewController;

UIViewController *rootViewController = [navController.viewControllers firstObject];  

NSArray *allViews = [NSArray arrayWithArray:(NSArray *)[rootViewController.view subviews]];

【讨论】:

  • 这确实有效,但问题是它阻止我拖回视图。
猜你喜欢
  • 2015-04-16
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 2012-07-18
相关资源
最近更新 更多