【发布时间】:2016-11-25 11:11:12
【问题描述】:
我试图通过扩展我的一个自定义 UIView 来调用方法,但我收到错误“'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()
}
}
}
显然我可以通过多种不同的方式实现这个功能,但我更感兴趣的是为什么这段代码不能编译,因为它在我看来在逻辑上是正确的。非常感谢所有帮助。
【问题讨论】:
-
除了缺少的
}之外,您的代码对我来说编译得很好 -
固定支架谢谢。这就是它的奇怪之处。我尝试删除派生数据,退出 Xcode 并重新启动,但它仍然无法编译。它必须与现有架构有关,然后@dan?
-
将扩展从它自己的单独文件移动到与 MyCustomView 相同的类解决了这个问题,但这不是我更愿意在架构上做的事情,不幸的是仍然没有回答我为什么它会赢的问题'不首先编译。
-
扩展名似乎只能在创建它们的文件中使用 (stackoverflow.com/questions/24133297/…)。我不确定这一定是真的,但这个问题可能会对你有所帮助。
标签: ios swift uiview swift-extensions