Saya berpikir mungkin sesuatu seperti ini mungkin berhasil:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Saya ingin menghapus setiap jenis subview. UIImages, Buttons, Textfields dll.
Saya berpikir mungkin sesuatu seperti ini mungkin berhasil:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Saya ingin menghapus setiap jenis subview. UIImages, Buttons, Textfields dll.
b
akan segera dihapus dari subviews
array, menyebabkan mutasi dalam loop enumerasi cepat, yang dilarang.
copy
specifier berarti bahwa hal itu membuat salinan ketika diatur ; tidak ada yang ditentukan tentang mendapatkan. Kemungkinan besar salinan dikembalikan, tetapi itu bukan bagian dari definisi properti.
Jawaban:
[self.view.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];
Ini identik dengan varian Anda, tetapi sedikit lebih pendek.
Anda bisa menggunakan seperti ini
//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()
}
view adalah tampilan yang ingin Anda hapus semuanya. Anda hanya menghapus setiap subview dengan melakukan forEach
Untuk Swift 4 +. Anda dapat membuat ekstensi ke UIView
. Sebut saja bila perlu.
extension UIView {
func removeAllSubviews() {
subviews.forEach { $0.removeFromSuperview() }
}
}