私は多分このような何かがうまくいくかもしれない考えていた。self.viewからすべてのサブビューを削除する最良の方法は何ですか?
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
私はサブビューのすべての種類を削除します。 UIImages、Buttons、Textfieldsなど。
私は多分このような何かがうまくいくかもしれない考えていた。self.viewからすべてのサブビューを削除する最良の方法は何ですか?
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
私はサブビューのすべての種類を削除します。 UIImages、Buttons、Textfieldsなど。
スウィフト:スウィフトで
extension UIView {
func removeAllSubviews() {
for subview in subviews {
subview.removeFromSuperview()
}
}
}
self.view.subviews.forEach({ $0.removeFromSuperview() })
同一バージョン。
あなたはこの
//adding an object to the view
view.addSubView(UIButton())
// you can remove any UIControls you have added with this code
view.subviews.forEach { (item) in
item.removeFromSuperview()
}
ビューのように使用することができますあなたがからすべてを削除する図です。 forEachを実行するだけで、すべてのサブビューを削除しています。
答えを広げることができますか? –
これを反復処理している間、これをコレクションに変更していませんか? – mixtly87
これでうまくいきます。サブビューの階層が複数ある場合は、再帰的に行う必要があるかもしれません。私はあなたがこれをしたいと思っているのか分かりません。 – Dustin
それは動作しますか?私は 'b'がすぐに' subviews'配列から削除され、高速列挙ループ内で突然変異を引き起こしたと考えました。これは禁止されています。 – Mazyod
@Mazyodチェックサブビュープロパティ:@property(非原子、読み取り専用、コピー)NSArray *サブビュー - コピーとして宣言されているので、サブビューを削除するときにその配列を変更しません。 – Max