问题
I have a UIView->UICollectionView->UICollectionViewCell. I am trying to navigate back programatically but none of these works. The code did called.
I am using StoryBoard.
- (void) goBack:(NSNotification *) notification {
      // [self.navigationController popViewControllerAnimated:YES];
     //  [self dismissViewControllerAnimated:YES completion:nil];
      [self.navigationController popToRootViewControllerAnimated:YES];
}
    回答1:
You need to use:
[self.navigationController popToRootViewControllerAnimated:YES];
This will bring you back to the root view controller.
If you want to navigate back to previous view controller, you should implement:
[self.navigationController popViewControllerAnimated:YES];
    回答2:
By using below line we can go to parent view controller
[self.navigationController popViewControllerAnimated:YES]; 
By using below line we can move to main/root view controller
[self.navigationController popToRootViewControllerAnimated:YES]; 
By using below line we can move to any view controller
[self.navigationController popToViewController:viewControllerObject animated:YES]; 
    回答3:
How about...
 [self.navigationController dismissViewControllerAnimated:YES completion:NULL];
Assuming that you are currently in a navigation-based controller and you wanted to go back to the previous controller before you got into a navigation-based controller.
回答4:
Swift solutions for easy copy pasting:
navigationController?.popViewControllerAnimated(true)
    回答5:
Try it....
#import "bookdescriViewController.h" // import here your class name 
- (IBAction)backButton:(id)sender 
{
  bookdescriViewController *previosVC = [[bookdescriViewController alloc]init];
  [self.navigationController popViewControllerAnimated:YES]; // go to previous view controller
  [self.navigationController popToRootViewControllerAnimated:YES]; // go to root view controller
  [self.navigationController popToViewController:previosVC animated:YES]; // go to any view controller
  [previosVC release];
}
    回答6:
With swift3,
@IBAction func back(_ sender: UIButton) {
    self.dismiss(animated: true, completion: nil)     
}
    回答7:
Swift 4.1:
navigationController.popViewController(animated: true)
    回答8:
- (void) goBack:(NSNotification *) notification 
{ 
   if(!self.YOrView.isHidden)
      self.YOrView.hidden = YES;
}
    回答9:
Go back to parent view controller and dealloc current view controller ex :
- (void)applicationDidEnterBackground:(NSNotification *)notification
{
    NSInteger numberOfViewControllers = self.navigationController.viewControllers.count;
    UIViewController *vc = [self.navigationController.viewControllers objectAtIndex:numberOfViewControllers - 2];
    [self.navigationController popToViewController:vc animated:NO];
}
or another view controller
来源:https://stackoverflow.com/questions/16075525/navigate-back-to-previous-view-controller