役に立つかどうかよくわからないTipsシリーズ
UIViewはsuperview
プロパティで親ビューを取得できますが、読み取り専用です
extension UIView {
public var parent: UIView? {
get {
return self.superview
}
set(v) {
if let view = v {
view.addSubview(self)
} else {
self.removeFromSuperview()
}
}
}
}
本来のビューオブジェクト同士の所有権(オーナーシップ)の思想でいけば
間違ってるような気もしなくもないですが
このようなプロパティをひとつ作ると、親ビューの設定が楽になり、さらには取得もできるようになります
let button = UIButton()
self.view.addSubview(button)
button.removeFromSuperview()
という実装が
let button = UIButton()
button.parent = self.view
button.parent = nil
という感じで、同じ挙動をシンプルに実装できます