How to get a uinavigation bar back button to return to anthother view controller

前端 未结 5 1683
Happy的楠姐
Happy的楠姐 2021-01-16 04:00

How would I go about having a UINavigation controller navigate not to the previous view but the view before that. Basically I would like it to jump back 2 places instead of

相关标签:
5条回答
  • 2021-01-16 04:01
    self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(youractonEvent:] autorelease];
    
    0 讨论(0)
  • 2021-01-16 04:05

    If you do not want to depend on array's index then you can do some thing like below :

    MyController * aMyController = nil ;
    for (int i=0; i<[[self.navigationController viewControllers] count]; i++) 
    {
        NSLog(@"%@",[[self.navigationController viewControllers] objectAtIndex:i]);
        if ([[[self.navigationController viewControllers] objectAtIndex:i] isKindOfClass:[MyController class]]) 
        {
            aMyController = [[self.navigationController viewControllers] objectAtIndex:i];      
        }
    }           
    [self.navigationController popToViewController:aMyController animated:YES];
    
    0 讨论(0)
  • 2021-01-16 04:07

    If you have three view controllers in NavigationController and currently you are viewing 3rd view controller and if you want to jump to 1st viewcontroller.

    Try this. This will navigate you twice back.

    [self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:0] animated:YES];
    

    Set appropriate value instead of 0 in your case.

    0 讨论(0)
  • 2021-01-16 04:15

    Set:

    self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(goBack)] autorelease];
    

    then create a method -goBack

    -(void)goBack
    {
       UIViewController *ctrl = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count - 2];
       [self.navigationController popToViewController:ctrl animated:YES];
    }
    
    0 讨论(0)
  • 2021-01-16 04:27

    Add a target to the button you added

    then use the following code to go back more than 1 viewController

    //Get the view controller that is 2 step behind
    UIViewController *controller = [nav.viewControllers objectAtIndex:nav.viewControllers.count - 2];
    
    //Go to that controller
    [nav popToViewController:controller animated:YES];
    
    0 讨论(0)
提交回复
热议问题