1. ホーム
  2. マコス

[解決済み]Swiftでビューのすべてのサブビューを削除する方法は?

2022-04-10 04:22:53

質問

スーパービューからサブビューを1つずつ削除するのではなく、一度にすべて削除する簡単な方法を探しています。

//I'm trying something like this, but is not working
let theSubviews : Array = container_view.subviews
for (view : NSView) in theSubviews {
    view.removeFromSuperview(container_view)
}

何が足りないのか?

アップデイト

私のアプリは、メイン container_view . にサブビューとして他のビューを追加する必要があります。 container_view を使い、一種のナビゲーションを提供します。

そこで、特定のページを開くボタンをクリックすると、すべてのサブビューを削除して、新しいページを追加する必要があります。

UPDATE 2 - 解決策 (OS X)

Appleが直したんだろう。

今ならもっと簡単に、電話するだけです。

for view in containerView.subviews{
    view.removeFromSuperview()
}

解決方法は?

EDIT: (ジェレマイアとロロに感謝)

iOSのSwiftでこれを行うには、断然、最適な方法があります。

view.subviews.forEach({ $0.removeFromSuperview() }) // this gets things done
view.subviews.map({ $0.removeFromSuperview() }) // this returns modified array

^^ こういう機能は楽しいですよね。

let funTimes = ["Awesome","Crazy","WTF"]
extension String { 
    func readIt() {
        print(self)
    }
}

funTimes.forEach({ $0.readIt() })

//// END EDIT

これをやればいいんです。

for view in self.view.subviews {
    view.removeFromSuperview()
}

また、特定のクラスを探している場合

for view:CustomViewClass! in self.view.subviews {
        if view.isKindOfClass(CustomViewClass) {
            view.doClassThing()
        }
    }