【问题标题】:Swift: Function Called when Back is pressedSwift:按下返回时调用的函数
【发布时间】:2016-07-30 01:42:27
【问题描述】:

当用户按下导航控制器上的“返回”按钮时,我想执行一些操作。发生这种情况时是否会调用 Swift 函数?

【问题讨论】:

    标签: swift


    【解决方案1】:
    override func viewWillDisappear(animated: Bool) {
    // Do Your Lines of Code ... 
    }
    

    每次按下后退按钮或完成或弹出视图时,都会调用此函数..您需要覆盖此..

    【讨论】:

    • 请记住,如果 viewController 呈现或推送另一个 viewController,也会调用它。
    【解决方案2】:

    试试这个:

    override func willMoveToParentViewController(parent: UIViewController?) {
        if parent == nil {
            // Back button Event handler
        }
    }
    

    【讨论】:

    • 我对此进行了测试,奇怪的是在我到达视图控制器之前以及单击后退按钮时调用了此函数。不幸的是,这对我不起作用。 Adbul 的函数在我需要的时候被调用。
    • 如果当前ViewController继续push到另一个ViewController,Abdul的函数有时会报错。
    • 这个方法根本没有被调用
    • 函数名称在 Swift 4(或 3)中更改为 willMove(toParentViewController:)。如果这个方法没有被调用,你的viewController在UINavigationController里面吗?它有自己的后退按钮而不是UINavigationController 提供的那个吗?
    【解决方案3】:

    试试这个(从 manecosta 复制和粘贴)

    按照另一个答案的建议将按钮替换为自定义按钮可能不是一个好主意,因为您将失去默认行为和样式。

    您还有一个选择是在视图控制器上实现 viewWillDisappear 方法并检查名为 isMovingFromParentViewController 的属性。如果该属性为 true,则意味着 View Controller 正在消失,因为它正在被移除(弹出)。

    应该看起来像:

    override func viewWillDisappear(animated : Bool) {
        super.viewWillDisappear(animated)
    
        if (self.isMovingFromParentViewController()){
            // Your code...
        }
    }
    

    Here 是另一个问题的链接

    【讨论】:

      【解决方案4】:

      尝试调用它

      override func viewDidDisappear(_ animated: Bool) {
          super.viewDidDisappear(animated)
      
          if self.isMovingFromParent {
              print("isMovingFromParent()") // dismiss for push viewController
          }
          if self.isBeingDismissed {
              print("isBeingDismissed()") // dismiss for modal that doesn't has navigationController
          }
          if self.navigationController?.isBeingDismissed ?? false {
              print("navigationController?.isBeingDismissed()") // dismiss for modal that has navigationController
          }
      }
      

      【讨论】:

      • 这看起来比接受的问题更精确。
      猜你喜欢
      • 1970-01-01
      • 2020-01-20
      • 2015-08-22
      • 1970-01-01
      • 2013-02-11
      • 2021-06-13
      相关资源
      最近更新 更多