मैं सोच रहा था कि शायद यह कुछ इस तरह काम करे:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
मैं हर तरह के सबव्यू को हटाना चाहता हूं। UIImages, Buttons, Textfields आदि।
मैं सोच रहा था कि शायद यह कुछ इस तरह काम करे:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
मैं हर तरह के सबव्यू को हटाना चाहता हूं। UIImages, Buttons, Textfields आदि।
b
यह तुरंत subviews
सरणी से हटा दिया जाएगा , जिससे एक तेजी से एन्यूमरेशन लूप के भीतर एक उत्परिवर्तन पैदा होगा, जो निषिद्ध है।
copy
विनिर्देशक का मतलब है कि यह एक प्रतिलिपि बनाता है जब सेट ; पाने के बारे में कुछ भी निर्दिष्ट नहीं है। यह काफी संभावना है कि एक प्रति लौटा दी जाए, लेकिन यह संपत्ति की परिभाषा का हिस्सा नहीं है।
जवाबों:
[self.view.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];
यह आपके वैरिएंट के समान है, लेकिन थोड़ा कम है।
आप इस तरह का उपयोग कर सकते हैं
//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()
}
दृश्य वह दृश्य है जिससे आप सब कुछ हटाना चाहते हैं। आप केवल forEach करके हर सबव्यू को हटा रहे हैं
स्विफ्ट 4 + के लिए। आप एक एक्सटेंशन बना सकते हैं UIView
। जब भी आवश्यक हो इसे बुलाओ।
extension UIView {
func removeAllSubviews() {
subviews.forEach { $0.removeFromSuperview() }
}
}