我使用isKind(of:)
方法检查UIView
是否属于UIImageView
类型。
但是swift 4
编译器给了我一个错误:
类型名称后的预期成员名称或构造函数调用
我无法弄清楚它有什么问题。
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
for subview: AnyObject in scrollView.subviews {
if subview.isKind(of: UIImageView) { //<-Expected member name or constructor call after type name
return subview as? UIView
}
}
return nil
}
答案 0 :(得分:2)
通常,尽管它在检查Objective-C类型方面起作用,但应避免使用isKind(of:)
,而使用简单的as?
或is
Swift运算符。所以这段代码(更正):
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
for subview in scrollView.subviews {
if subview.isKind(of: UIImageView.self) {
return subview
}
}
return nil
}
相当于:
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
for subview in scrollView.subviews {
if subview is UIImageView {
return subview
}
}
return nil
}
修改强>
整个方法可以很容易地替换为:
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return scrollView.subviews.first(where: {$0 is UIImageView }) ?? nil
}
答案 1 :(得分:2)
只需使用is
运算符即可。并且您不需要转为UIView
,因为subviews
是UIView
的
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
for subview in scrollView.subviews {
if subview is UIImageView {
return subview
}
}
return nil
}