我正在尝试通过扩展我的一个自定义UIViews来调用方法,但是我得到错误“类型'MyCustomView'的值没有成员'testMethod'”。以下是我的代码
extension MyCustomView {
func testMethod() {
//do stuff here
}
}
//in a separate class from the extension
class func onMoreOptionsButtonPressed(currentViewController:UIViewController) {
for view in currentViewController.view.subviews {
if view.isKindOfClass(MyCustomView) {
let myCustomView = view as! MyCustomView
myCustomView.testMethod()
}
}
}
显然我可以通过一系列不同的方式实现这个功能,但是我更感兴趣的是为什么这个代码不能编译,因为它在逻辑上对我来说是正确的。非常感谢所有帮助。
答案 0 :(得分:0)
这可能与UIView是Objective-C类和方法调度与纯Swift类略有不同这一事实有关。
您可能必须使用dynamic指令声明扩展的方法,以满足Obj-C的方法调度机制。
(我没想过你)
答案 1 :(得分:0)
我能想到的唯一答案是你的扩展文件不是你正在编译的目标的成员。选择具有扩展代码的文件,然后在文件检查器中查看目标成员身份,确保选中目标。如果文件不在项目文件夹中,您可能必须将其移动到那里才能看到目标成员资格部分。