iphone - 以编程方式调用导航控制器后退按钮

obe*_*aum 84 objective-c button uinavigationcontroller ios

在一个基于UINavigationController的iPhone应用程序中,在一个方法中,我想执行按下后退按钮的程序化等效项并返回视图.

即自动按下Jobs按钮,如下所示:

导航控制器图像

我可以进行通用的iOS通话,还是需要更多信息?

Ste*_*son 188

UINavigationController-popViewControllerAnimated:方法应该做你想要的:

[navigationController popViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

  • 太棒了,感谢Steve和Niels.我使用的解决方案是[self.navigationController popViewControllerAnimated:YES]; 简单 ;) (12认同)

Kev*_*ott 24

假设您实际上并不想以编程方式按下按钮,而只是复制按下按钮的结果,您应该告诉导航控制器弹出当前视图控制器.

[self.navigationController popViewControllerAnimated:YES];

这将从堆栈中删除它,并返回到上一个视图控制器.


Tal*_*ion 21

Swift 3.0

回到根视图

self.navigationController?.popToRootViewController(animated: true)
Run Code Online (Sandbox Code Playgroud)

回到上一个视图

self.navigationController?.popViewController(animated: true)
Run Code Online (Sandbox Code Playgroud)

斯威夫特2.3

回到根视图

self.navigationController?.popToRootViewControllerAnimated(true)
Run Code Online (Sandbox Code Playgroud)

回到上一个视图

self.navigationController?.popViewControllerAnimated(true)
Run Code Online (Sandbox Code Playgroud)


Nie*_*tle 7

你应该打电话

popViewControllerAnimated:

这与添加视图控制器相反 pushViewController:animated:


Nis*_*jan 6

[self.navigationController popViewControllerAnimates:YES];
Run Code Online (Sandbox Code Playgroud)

是最好的选择,但如果您在同一个视图控制器类或您的委托更改之前调用后退按钮方法,那么您也可以尝试 -

首先你必须定义后退按钮---

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"anyTitleForBackButton" style: UIBarButtonItemStyleBordered target: nil action: @selector(backButtonTapped)];

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];
Run Code Online (Sandbox Code Playgroud)

然后在backButtonTapped方法中你可以调用 -

[self.navigationController pushViewController:desiredViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)