【发布时间】:2015-12-14 20:40:15
【问题描述】:
有很多答案,但他们不回答问题。比如我把下面的代码放进去:
override func viewWillDisappear(animated: Bool) {
if (self.navigationController!.viewControllers.indexOf(self)==nil) {
print("back button pressed\n")
}
super.viewWillDisappear(animated)
}
但是即使没有按下后退按钮,“按下后退按钮”也会打印到控制台。场景具有使用展开转场返回前一个场景的按钮,这些按钮会导致打印“按下后退按钮”。只有按下后退按钮时,我才需要执行代码。
为 Muneeba 编辑:
import UIKit
class NewViewController: UIViewController, UINavigationBarDelegate {
func navigationBar(navigationBar: UINavigationBar, didPopItem item: UINavigationItem) {
performSegueWithIdentifier("returnToStepOne", sender: self)
delegate.backFromNewViewController()
}
override func viewDidLoad() {
super.viewDidLoad()
// self.navigationController.navigationBar.delegate = self;
navigationController?.navigationBar.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
【问题讨论】:
-
最佳解决方案是在导航栏中隐藏默认
backButtonItem,并添加自定义ButtonItem并为其指定导航返回的操作。 -
@DipenPanchasara 还有其他方法吗?显示的后退按钮很好。我不想重新创建它。
-
我建议的方式是最好的方式,否则你需要检查你在哪里导航,为每个导航设置条件。
-
你可以用你自己的后退按钮覆盖后退按钮,然后调用一个函数来执行背景动画和任何你想要的。