【发布时间】:2011-01-07 15:36:15
【问题描述】:
在基于 UINavigationController 的 iPhone 应用程序中,我希望在一种方法中执行相当于按下后退按钮并返回视图的程序化方法。
即自动按下 Jobs 按钮,如下所示:
我可以拨打通用 iOS 电话,还是需要更多信息?
【问题讨论】:
标签: ios objective-c button uinavigationcontroller
在基于 UINavigationController 的 iPhone 应用程序中,我希望在一种方法中执行相当于按下后退按钮并返回视图的程序化方法。
即自动按下 Jobs 按钮,如下所示:
我可以拨打通用 iOS 电话,还是需要更多信息?
【问题讨论】:
标签: ios objective-c button uinavigationcontroller
你应该打电话
popViewControllerAnimated:
这与使用 pushViewController:animated: 添加视图控制器相反
【讨论】:
UINavigationController 的-popViewControllerAnimated: 方法应该做你想做的事:
[navigationController popViewControllerAnimated:YES];
【讨论】:
[self.navigationController popViewControllerAnimated:YES];,但它什么也没做,但是在点击该按钮时会发出警报。
假设您实际上不想以编程方式按下按钮,而只是复制按下按钮的结果,您应该告诉导航控制器弹出当前视图控制器。
[self.navigationController popViewControllerAnimated:YES];
这会将它从堆栈中移除,并返回到之前的视图控制器。
【讨论】:
[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];
【讨论】:
Swift 3.0
返回根视图
self.navigationController?.popToRootViewController(animated: true)
返回上一视图
self.navigationController?.popViewController(animated: true)
斯威夫特 2.3
返回根视图
self.navigationController?.popToRootViewControllerAnimated(true)
返回上一视图
self.navigationController?.popViewControllerAnimated(true)
【讨论】: