gpt4 book ai didi

ios - 在 Swift 3 中使用选择器

转载 作者:搜寻专家 更新时间:2023-10-31 08:17:55 25 4
gpt4 key购买 nike

我正在用 Swift 3 编写我的 iOS 应用程序。

我有一个 UIViewController 扩展,我必须在其中检查 Controller 实例是否响应某个方法。下面是我尝试的代码。

extension UIViewController {
func myMethod() {
if self.responds(to: #selector(someMethod)) {

}
}}

这里 responds(to:) 方法抛出编译时错误

Use of unresolved identifier "someMethod".

我在另一篇文章中读到,我们必须在选择器参数中使用 self,但即便如此也会引发一些错误。

最佳答案

一个简单的解决方法:

@objc protocol SomeMethodType {
func someMethod()
}
extension UIViewController {
func myMethod() {
if self.responds(to: #selector(SomeMethodType.someMethod)) {
//...
self.perform(#selector(SomeMethodType.someMethod))
// or
(self as AnyObject).someMethod?()
//...
}
}
}

更 Swifty 的方式:

protocol SomeMethodType {
func someMethod()
}
//For all classes implementing `someMethod()`.
extension MyViewController: SomeMethodType {}
//...
extension UIViewController {
func myMethod() {
if let someMethodSelf = self as? SomeMethodType {
//...
someMethodSelf.someMethod()
//...
}
}
}

关于ios - 在 Swift 3 中使用选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39818001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com