Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIViewController';s确定pop的委托函数_Ios_Swift_Uiviewcontroller_Uinavigationcontroller - Fatal编程技术网

Ios UIViewController';s确定pop的委托函数

Ios UIViewController';s确定pop的委托函数,ios,swift,uiviewcontroller,uinavigationcontroller,Ios,Swift,Uiviewcontroller,Uinavigationcontroller,我在导航堆栈中有3个ViewController,它们是ViewControllerA、ViewControllerB和ViewControllerC 当我从ViewControllerB按下后退按钮时,我到达ViewControllerA 我想检查我是如何通过弹出或作为导航堆栈的rootViewController到达ViewControllerA的。您可以为backButton提供一个展开功能,并在视图控制器中捕捉它 @IBAction func unwindToView(unwindSeg

我在导航堆栈中有3个ViewController,它们是ViewControllerA、ViewControllerB和ViewControllerC

当我从ViewControllerB按下后退按钮时,我到达ViewControllerA


我想检查我是如何通过弹出或作为导航堆栈的rootViewController到达ViewControllerA的。

您可以为backButton提供一个展开功能,并在视图控制器中捕捉它

@IBAction func unwindToView(unwindSegue: UIStoryboardSegue) {
    if let XControllerView = unwindSegue.sourceViewController as? XController {
        print("Coming from XControllerView")
    }
    else if let YControllerView = unwindSegue.sourceViewController as? YController {
        print("Coming from YControllerView")
    }
}
有关展开的详细信息:

制定协议:

protocol DismissProtocol{
func dismissPresentedViewControllerComplete()
}
我们将使viewControllerA符合此协议

在ViewControllerB中创建DismissProtocol类型的属性

class ViewControllerB: UIViewController{

var delegate: DismissProtocol?
//............

}
显示ViewControllerB时,将ViewControllerA指定为代理

class SecondController: UIViewController{
var delegate: DismissProtocol?
覆盖ViewControllerA中的协议方法:

extension ViewControllerA: DismissProtocol{
func dismissPresentedViewControllerComplete() {
    // Do what you want to do when you return from ViewControllerB
}
}
现在,在ViewControllerB的Disclose completion中,执行以下覆盖方法:

        self.dismiss(animated: false) {
        self.delegate?.dismissPresentedViewControllerComplete()
    }

添加您尝试过的代码。这个问题包含的信息太少,任何人都无法帮助你。请解释你想做什么