Timur Mustafaev
Timur Mustafaev

Reputation: 4929

How to press "Back" button in UINavigationController programmatically

I have a UIViewController called FriendsViewController inside a UINavigationController. And a second UIViewController called FriendsDetailedViewController. When navigating from the first view controller to the second, I want to programmatically press the Back button when needed. How to do this?

Upvotes: 60

Views: 34863

Answers (6)

Mann
Mann

Reputation: 2118

Simply use

[self.navigationController popViewControllerAnimated:YES]

from FriendsDetailedViewController. Your view will be popped out i.e. the behavior of back button.

Note that it returns UIViewController on normally, and returns nil if there is nothing to pop.

Upvotes: 176

Amit
Amit

Reputation: 310

Swift 5

 self.navigationController?.popViewController(animated: true)

Usage in a code snippet:

func unwindViewController() {
    self.navigationController?.popViewController(animated: true)
}

Upvotes: 3

Jaya Mayu
Jaya Mayu

Reputation: 17247

Here is how I did it in Swift 3

_ = self.navigationController?.popViewController(animated: true)

_ is used to suppress the ugly warning generated by XCode.

Upvotes: 0

Mohit
Mohit

Reputation: 126

1) When you pop in current NavigationController Then

In Swift

self.navigationController?.popViewControllerAnimated(true)

Objective C

[self.navigationController popViewControllerAnimated:YES];

2) When you back another Navigation controller Then

In Swift

let story = UIStoryboard(name: "Main", bundle: nil)
let pushVC = story.instantiateViewControllerWithIdentifier("PushVC")
let navigation = story.instantiateViewControllerWithIdentifier("homeNavigation") as! UINavigationController
navigation.pushViewController(pushVC!, animated: true)

In Objective C

UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"storyBoardName" bundle:nil];
pushVC* ObjectOfPushVC = [storyboard instantiateViewControllerWithIdentifier:@"pushVC"];

[self.navigationController pushViewController:ObjectOfPushVC animated:YES];

Upvotes: 0

MGM
MGM

Reputation: 2375

Here is the swift method

if let navController = self.navigationController {
    navController.popViewControllerAnimated(true)
}

Upvotes: 9

Bartek
Bartek

Reputation: 1996

If by pressing "Back" button you mean just to go to the previous view controller, you can just call:

[self.navigationController popViewControllerAnimated:YES];

Upvotes: 16

Related Questions