Вызовите метод перед отображением SWRevealViewController

Я использую плагины 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];

Я не могу понять, как вызвать функцию в своем собственном классе, пока не будет запущено действие reveToggle. Какие-либо предложения?

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

тогда вы можете получить каждое подпредставление от этого viewcontroller. например, если frontviewcontroller UINavigationController, вы можете сделать так:

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

UIViewController *rootViewController = [navController.viewControllers firstObject];  

NSArray *allViews = [NSArray arrayWithArray:(NSArray *)[rootViewController.view subviews]];
Другие вопросы по тегам