Belki böyle bir şeyin işe yarayacağını düşünüyordum:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Her türlü alt görünümü kaldırmak istiyorum. UIImages, Buttons, Textfields vb.
Belki böyle bir şeyin işe yarayacağını düşünüyordum:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Her türlü alt görünümü kaldırmak istiyorum. UIImages, Buttons, Textfields vb.
b
derhal kaldırılacağını ve subviews
hızlı bir numaralandırma döngüsü içinde yasak olan bir mutasyona neden olacağını düşündüm .
copy
Bir kopyasını yapar belirteci aracı ayarladığınızda ; alma hakkında hiçbir şey belirtilmedi. Büyük olasılıkla bir kopya döndürülür, ancak bu özellik tanımının bir parçası değildir.
Yanıtlar:
[self.view.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];
Sizin varyantınızla aynı, ancak biraz daha kısadır.
Bunun gibi kullanabilirsin
//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()
}
görünüm, her şeyi kaldırmak istediğiniz görünümdür. forEach yaparak her alt görünümü kaldırıyorsunuz
Swift 4 + için bir uzantı yapabilirsiniz UIView
. Gerektiğinde arayın.
extension UIView {
func removeAllSubviews() {
subviews.forEach { $0.removeFromSuperview() }
}
}