0

Im using SWRevealViewController to create a sliding menu.

When the user presses the bar button of initial view controller, a new second view controller has to open. The user has to navigate back again to the initial view controller when the barbutton is pressed from the second view controller.

Im using the following code to move the used from second view controller to initial view controller.

 SWRevealViewController *revealViewController = self.revealViewController;
    if ( revealViewController )
    {
        [self.sidebarButton setTarget: self.revealViewController];
        [self.sidebarButton setAction: @selector( goBack )];
        [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
    }

But im getting the following error message,

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SWRevealViewController goBack]: unrecognized selector sent to instance

Following is my goBack method

- (IBAction)back:(id)sender {

    [self.navigationController popToRootViewControllerAnimated:YES];

} 
Anbu.Karthik
  • 82,064
  • 23
  • 174
  • 143
  • Which view controller implements `goBack`? That should be the target of the button. Right now SWRevealViewController is the target, but it doesn't implement that method. – beyowulf Apr 30 '16 at 13:53

1 Answers1

0

actually you crated the button and action , but you forget to imeplement the method of goBack,

-(Void) goBack
{
// do something
}

Update-2

is not in goBack it is goBack:

  - (IBAction)back:(id)sender {

[self.navigationController popToRootViewControllerAnimated:YES];

} 

full Answer is

SWRevealViewController *revealViewController = self.revealViewController;
if ( revealViewController )
{
    [self.sidebarButton setTarget: self.revealViewController];
    [self.sidebarButton setAction: @selector( goBack: )];
    [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
}


  - (IBAction)back:(id)sender {

[self.navigationController popToRootViewControllerAnimated:YES];

} 

edit answer

SWRevealViewController *revealViewController = self.revealViewController;
if ( revealViewController )
{
    [self.sidebarButton setTarget: self.revealViewController];
    [self.sidebarButton setAction: @selector( revealToggle: )];
    [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
} 
Anbu.Karthik
  • 82,064
  • 23
  • 174
  • 143