xyk blog

最近は iOS 開発の記事が多めです。

Swift で for-in ループ時にキャストする

環境: Swift5.1

例えば、あるビューに追加されている複数のサブビューの中から UIButton にキャストできるものだけ処理する場合

for case let button as UIButton in view.subviews {
    // ボタンに対する処理。ボタン以外はスキップされる。
    // 例えばボタンの押下
    button.sendActions(for: .touchUpInside)
}

キャストまでは不要だが、あるクラス(またはサブクラス)時のみループ内を処理を実行する場合

for view in view.subviews where view is UIButton {
    // ビューに対する処理。ボタン以外はスキップされる。
    // 例えばボタンの削除
    view.removeFromSuperview()
}