Myślałem, że może coś takiego może zadziałać:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Chcę usunąć każdy rodzaj podglądu. UIImages, przyciski, pola tekstowe itp.
Myślałem, że może coś takiego może zadziałać:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Chcę usunąć każdy rodzaj podglądu. UIImages, przyciski, pola tekstowe itp.
b
zostanie to natychmiast usunięte z subviews
tablicy, powodując mutację w szybkiej pętli wyliczania, co jest zabronione.
copy
oznacza, że po ustawieniu tworzy kopię ; nic nie jest określone na temat pobierania. Jest całkiem prawdopodobne, że kopia zostanie zwrócona, ale nie jest to część definicji właściwości.
Odpowiedzi:
[self.view.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];
Jest identyczny z twoim wariantem, ale nieco krótszy.
Możesz używać w ten sposób
//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()
}
widok to widok, z którego chcesz usunąć wszystko. po prostu usuwasz wszystkie podziały, wykonując forEach
Dla Swift 4 +. Możesz rozszerzyć UIView
. Zadzwoń, kiedy to konieczne.
extension UIView {
func removeAllSubviews() {
subviews.forEach { $0.removeFromSuperview() }
}
}