I know the meaning of unrecognized selector issue. It is always due to calling a method which is not implemented or not found. I have the selector implemented and I can see it as well.
Still I am getting this error. I am using MFSlideMenu control.
It works great for me until user signout and sign in again. After sign in, when user click on navigation bar item, my app crashes saying:
[__NSCFType gestureRecognizer:shouldReceiveTouch:]: unrecognized selector sent to instance 0xc882da0
I am setting root controller in my AppDelegate
like this:
LeftMenuViewController *leftSideMenuController = [[LeftMenuViewController alloc] init];
RightMenuViewController *rightSideMenuController = [[RightMenuViewController alloc] init];
MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
containerWithCenterViewController:self.meNavigationController
leftMenuViewController:leftSideMenuController
rightMenuViewController:rightSideMenuController];
[[self.meNavigationController.viewControllers lastObject] viewDidLoad];
self.window.rootViewController = container;
[self.window makeKeyAndVisible];
Then, in my viewController
, I am setting navBarItems
according to this control in my viewDidLoad
method.
Here I am setting navBarItems
:
#pragma mark - UIBarButtonItems
- (void)setupMenuBarButtonItems {
self.navigationItem.rightBarButtonItem = [self rightMenuBarButtonItem];
if(self.menuContainerViewController.menuState == MFSideMenuStateClosed &&
![[self.navigationController.viewControllers objectAtIndex:0] isEqual:self]) {
self.navigationItem.leftBarButtonItem = [self backBarButtonItem];
} else {
self.navigationItem.leftBarButtonItem = [self leftMenuBarButtonItem];
}
}
- (UIBarButtonItem *)leftMenuBarButtonItem {
return [[UIBarButtonItem alloc]
initWithImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"reveal-icon.png" ofType:nil]] style:UIBarButtonItemStyleBordered
target:self
action:@selector(leftSideMenuButtonPressed:)];
}
- (UIBarButtonItem *)rightMenuBarButtonItem {
return [[UIBarButtonItem alloc]
initWithImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"reveal-icon.png" ofType:nil]] style:UIBarButtonItemStyleBordered
target:self
action:@selector(rightSideMenuButtonPressed:)];
}
- (UIBarButtonItem *)backBarButtonItem {
return [[UIBarButtonItem alloc] initWithTitle:BACK_BUTTON_NAVIGATION_BAR_BUTTON_STRING style:UIBarButtonItemStylePlain target:nil action:nil];
}
#pragma mark - UIBarButtonItem Callbacks
- (void)backButtonPressed:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
- (void)leftSideMenuButtonPressed:(id)sender {
[self.menuContainerViewController toggleLeftSideMenuCompletion:^{
[self setupMenuBarButtonItems];
}];
}
- (void)rightSideMenuButtonPressed:(id)sender {
[self.menuContainerViewController toggleRightSideMenuCompletion:^{
[self setupMenuBarButtonItems];
}];
}