Tôi đã nghĩ có thể một cái gì đó như thế này có thể hoạt động:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Tôi muốn xóa mọi loại lượt xem phụ. UIImages, Buttons, Textfields, v.v.
Tôi đã nghĩ có thể một cái gì đó như thế này có thể hoạt động:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Tôi muốn xóa mọi loại lượt xem phụ. UIImages, Buttons, Textfields, v.v.
b
sẽ được xóa ngay lập tức khỏi subviews
mảng, gây ra đột biến trong vòng lặp liệt kê nhanh, điều này bị cấm.
copy
chỉ định có nghĩa là nó tạo một bản sao khi được đặt ; không có gì được chỉ định về nhận được. Rất có thể một bản sao được trả lại, nhưng đó không phải là một phần của định nghĩa thuộc tính.
Câu trả lời:
[self.view.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];
Nó giống với biến thể của bạn, nhưng ngắn hơn một chút.
Bạn có thể sử dụng như thế này
//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()
}
chế độ xem là chế độ xem mà bạn muốn xóa mọi thứ khỏi đó. bạn chỉ xóa mọi lượt xem phụ bằng cách thực hiện forEach
Đối với Swift 4 +, bạn có thể tạo một phần mở rộng cho UIView
. Gọi nó bất cứ khi nào cần thiết.
extension UIView {
func removeAllSubviews() {
subviews.forEach { $0.removeFromSuperview() }
}
}