在iOS上以编程方式调用导航控制器后退按钮


84

在基于UINavigationController的iPhone应用程序中,我想以一种方法执行与按下后退按钮和返回视图相同的程序。

即自动按下“作业”按钮,如下所示:

导航控制器图片

我可以拨打普通的iOS电话吗,还是需要更多信息?

Answers:


188

UINavigationController-popViewControllerAnimated:方法应做您想要的:

[navigationController popViewControllerAnimated:YES];

12
非常棒,这要感谢史蒂夫和尼尔斯。我使用的解决方案是[self.navigationController popViewControllerAnimated:YES]; 简单;)
oberbaum 2010年

除了在uitabbar上添加了viewcontrollers之外,这非常有用。有任何线索吗?
virata 2012年

1
我添加了,[self.navigationController popViewControllerAnimated:YES];但是它什么也没做,但是在点击该按钮时会发出警告。
mohsin.mr

嗯,我得到了一个空白屏幕,一个无响应的应用程序,以及控制台中的以下内容:“完成导航状态的意外转变。导航栏子视图树可能已损坏。”
Kurt 2014年

24

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

[self.navigationController popViewControllerAnimated:YES];

这会将其从堆栈中删除,并使您返回到以前的视图控制器。


21

斯威夫特3.0

返回根视图

self.navigationController?.popToRootViewController(animated: true)

返回上一个视图

self.navigationController?.popViewController(animated: true)

迅捷2.3

返回根视图

self.navigationController?.popToRootViewControllerAnimated(true)

返回上一个视图

self.navigationController?.popViewControllerAnimated(true)

7

你应该打电话

popViewControllerAnimated:

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


6
[self.navigationController popViewControllerAnimates:YES];

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

首先,您必须定义后退按钮---

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

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];

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

[self.navigationController pushViewController:desiredViewController animated:YES];
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.