2
나는 generics로 고민 중이다. 나는 함수 param에서 전달 된 클래스의 수퍼 뷰를 재귀 적으로 찾기 위해 간단한 UIView 확장을 만들고 싶다. 필자는 함수가 제공된 클래스의 인스턴스로 보이는 nil 또는 object 중 하나를 명시 적으로 포함하는 옵션을 반환하도록합니다.스위프트는 제네릭으로 주어진 클래스의 슈퍼 뷰를 찾는다.
extension UIView {
func superviewOfClass<T>(ofClass: T.Type) -> T? {
var currentView: UIView? = self
while currentView != nil {
if currentView is T {
break
} else {
currentView = currentView?.superview
}
}
return currentView as? T
}
}
많은 도움을 주셨습니다. 스위프트
? 코드가 제대로 작동하는 것처럼 보입니다. 재귀 적으로이 작업을 수행하려한다고 언급했지만 해결 방법은 반복적입니다. 이 코드를 재귀 버전으로 변환하려고하십니까? 그렇게하기위한 시도를 포함시킬 수 있습니까? –
죄송합니다. 실수입니다. 질문의 재귀 부분은 완전히 관련이 없으며, 코드 단순화를 위해 반복적으로 만들었습니다. 중요한 부분은 일반적인 것입니다. 그리고 실제로 ... 당신 말이 맞아요.이 코드는 작동합니다. 왜 전에 실패했는지 모르겠습니다. 나는 그것을 여기에 게시 할 목적으로 조금만 청소했고, 나는 그것을 고치기 만하면되는 것처럼 보였다.) –
수퍼 클래스 권자로 잘못 읽힌 수퍼 뷰. – Alexander