はAnyClass
としてsuperclass
をパスし、それをテストするためにisKind(of:)
を使用します。view.superview
はあなたがそれをアンラップする必要が任意であるので
func viewHasSuperviewOfClass(view: UIView, superclass: AnyClass) -> Bool {
return view.superview?.isKind(of: superclass) ?? false
}
を。使用オプションなしスーパービューがない場合はnil
を返し、そう何superview
がない場合はfalse
を返すために、オペレータ??
を合体nilをを使用します連鎖。
例:
let button = UIButton()
let label = UILabel()
label.addSubview(button)
viewHasSuperviewOfClass(view: button, superclass: UILabel.self) // true
viewHasSuperviewOfClass(view: label, superclass: UIButton.self) // false
あなたはこの関数のシグネチャを作成する場合、それは少し良く読みます:
func view(_ view: UIView, hasSuperviewOfClass superclass: AnyClass) -> Bool {
return view.superview?.isKind(of: superclass) ?? false
}
// example call
view(button, hasSuperviewOfClass: UILabel.self)
はview.superview.isKindOfClass – koropok