使用contains()检查Swift中是否按下了后退按钮

时间:2017-07-04 03:52:24

标签: swift

我需要检查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")
        }
    }
}

1 个答案:

答案 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")
    }
}