我需要检查Swift中是否按下了后退按钮。该操作不会以编程方式触发,因此该方法似乎是检查self是否在viewcontroller堆栈中。我认为解决方案就在这里:
How to check for self with contains() in Swift?
然而,对于每个答案,Swift告诉我contains是一个未解析的标识符。我明白这是在Swift标准库中,所以我假设我不知道如何使用它。
因此,以下功能的正确形式是什么?
override func viewDidDisappear(_ animated: Bool) {
if let viewControllers = self.navigationController?.viewControllers as? [UIViewController] {
if (contains(viewControllers, self)) {
print("Back button not pressed")
} else {
print ("Back button pressed")
}
}
}
答案 0 :(得分:1)
与RAJAMOHAN-S类似,我看看我从哪里过渡。但是,功能
override func willMove(toParentViewController parent: UIViewController?)
提供了一种很好的方法;我结合了一个简单的bool变量来区分是否真的使用了后退按钮,或者另一个编程方法是否意味着转换事件。
override func willMove(toParentViewController parent: UIViewController?) {
super.willMove(toParentViewController: parent)
if parent == nil {
// The back button was pressed, can be acted on
}
}
else{
print ("Coming here from a child view")
}
}