Dismiss pushed view from within Navigation Control

2019-03-10 22:45发布

I have a Navigation Controller with a View Controller displaying a button. The button is linked to another View Controller using a push segue which automatically adds a top navigation bar with a back button. This all works fine. Pressing the back button slides off the 2nd view and returns to the 1st.

I have a button on the 2nd View Controller, that when pressed runs some code and a delegate call back to the 1st View Controller. Again this works fine.

Now I just need to dismiss the 2nd pushed View from code as if the back button was pressed. I have tried using dismissModalViewCcontrollerAnimated and dismissViewControllerAnimated, however they both dismiss the whole Navigation Controller which removes view 2 and 1 (returning bak to my main menu).

Whats the correct way to slide off the view.

5条回答
混吃等死
2楼-- · 2019-03-10 23:11

Obtain a reference to your UINavigationController and call

- (UIViewController *)popViewControllerAnimated:(BOOL)animated

on it.

查看更多
Bombasti
3楼-- · 2019-03-10 23:14

On Objective-C is

[self.navigationController popViewControllerAnimated:YES];

for a jump to the first root controller

[self.navigationController popToRootViewControllerAnimated:YES];

or is a possible move to the specific controller

[self.navigationController popToViewController:(nonnull UIViewController *) animated:(BOOL)];

animation specific animation process of move the controller. If the animation is false the controller will appear without animations. The UIViewController must be from one which is on the stack.

查看更多
霸刀☆藐视天下
4楼-- · 2019-03-10 23:21

In swift you can also call:

self.navigationController?.popToRootViewControllerAnimated(true)
查看更多
姐就是有狂的资本
5楼-- · 2019-03-10 23:23

In Swift it would be calling the method

self.navigationController?.popViewControllerAnimated(true)
查看更多
贼婆χ
6楼-- · 2019-03-10 23:32

If we use push segue, then use popViewController

@IBAction func backButtonClicked(_ sender: Any) {
    self.navigationController?.popViewController(animated: false)
}
查看更多
登录 后发表回答