从扩展Swift中的另一个方法执行关闭

问题描述 投票:0回答:1

我有一个类,它是自定义模态视图的委托,因此,它具有一种用于关闭模态的方法。我正在扩展该类,并且在扩展中,我有一个接受完成闭包的方法。

我不能写出类的主要实现或模态的实现,只能写扩展。

我想在关闭模态时执行闭包,但是我似乎无法自行解决。可能吗?

这里是我想做的事的一个例子:

extension MyClass {
    func method(completion: () -> ()) {
        // showing the modal
    }
}

extension MyClass: ModalDelegate {
    func modalDismissed() {
        // here I want to execute the completion passed to method()
    }
}
swift delegates closures
1个回答
0
投票

将完成作为变量分配给类属性,如下所示:

class MyClass {
    var classCompletion: (() -> ())?
}

extension MyClass {
    func method(completion: @escaping () -> ()) {
        classCompletion = completion
    }
}

extension MyClass: ModalDelegate {
    func modalDismissed() {
        classCompletion?()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.