Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UINavigationController: Determine if Back button was pressed or popViewControllerAnimated

In UINavigationController, is there a way to button if the current viewcontroller is being dismissed as a result of the user pressing the back button or if the view controller is being dismissed programmatically with popViewControllerAnimated?

Note: I am specifically trying to differentiate between the 2 events. This is not a duplicate of this question as I am trying to figure out which event was called, not when the view controller is being dismissed

To Clarify: I am trying to figure out whether the view is disappearing because

a) the back button was pressed or

b) popViewControllerAnimated was called

like image 891
Lneuner Avatar asked Dec 14 '25 19:12

Lneuner


1 Answers

On viewWillDisappear method you can check values for isMovingFromParentViewController:

self.isMovingFromParentViewController()

which will return Bool, a Boolean value that indicates that the view controller is in the process of being removed from its parent.

Updated:

As replied, I think you will need to implement custom back button with its own method which can keep track of it.

self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.hidesBackButton = true; 

let backButton = UIBarButtonItem(title: "< Back", style: UIBarButtonItemStyle.Plain, target: self, action: nil)
backButton.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Chalkduster", size: 20)!], forState: UIControlState.Normal)
navigationItem.backBarButtonItem = backButton
backButton.addTarget(self, action: "backButtonMethod",forControlEvents:UIControlEvents.TouchUpInside)
like image 95
Arvind Avatar answered Dec 17 '25 10:12

Arvind



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!