Swift: 当后退按钮被按下时调用的函数

11
当用户在我的导航控制器上按下“返回”按钮时,我希望执行一些操作。是否有一个Swift函数在此发生时调用? enter image description here
5个回答

5

请尝试以下方法 (从manecosta复制并粘贴)

根据另一个答案建议更换自定义按钮可能不是个好主意,因为这样会失去默认的行为和样式。

你还有另一个选择,可以在视图控制器上实现viewWillDisappear方法,并检查名为isMovingFromParentViewController的属性。如果该属性为true,则表示视图控制器正在消失,因为它被移除(弹出)。

代码示例:

override func viewWillDisappear(animated : Bool) {
    super.viewWillDisappear(animated)

    if (self.isMovingFromParentViewController()){
        // Your code...
    }
}

这里是另一个问题的链接

该问题需要解决当用户点击导航栏的返回按钮时触发某个操作的方法。

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
    }
}

1
这看起来比被接受的问题更精确。 - JBarros35

3
override func viewWillDisappear(animated: Bool) {
// Do Your Lines of Code ... 
}

每当按下返回按钮或完成按钮,或者视图被弹出时,都会调用此函数...您需要重写它。

12
请记住,如果视图控制器呈现或推送另一个视图控制器,也会调用此方法。 - Slayter

2

试试这个:

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

我测试了一下,奇怪的是,在我到达视图控制器之前就调用了这个函数,以及当我点击返回按钮时也会调用。不幸的是,那对我来说行不通。我需要在需要的时候调用Adbul的函数。 - GED125
1
Abdul的函数有时会出现错误,如果当前视图控制器继续推到另一个视图控制器。 - Twitter khuong291
这个方法根本没有被调用 - zulkarnain shah
在Swift 4(或3)中,函数名称已更改为willMove(toParentViewController:)。如果此方法未被调用,您的视图控制器是否位于UINavigationController内?它是否具有自己的返回按钮而不是由UINavigationController提供的按钮? - John Pang

1

Swift 5

每次向前或向后调用“viewWillDisappear”。 但是,如果您添加此检查,它仅在从控制器返回时调用。

override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
       
        if self.isMovingFromParent {
            print("Only back action")
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接