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.
bakan segera dihapus dari subviewsarray, menyebabkan mutasi dalam loop enumerasi cepat, yang dilarang.
copyspecifier 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() }
}
}