मैं UIScrollview से सभी सबव्यूव को कैसे हटा सकता हूं?UIScrollView से सभी सबव्यूव हटाएं?
उत्तर
scrollView
UIScrollView
का उदाहरण बनें।
उद्देश्य-सी में, यह बहुत आसान है। बस, makeObjectsPerformSelector:
फोन तो जैसे:
ऑब्जेक्टिव-सी:
[scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
स्विफ्ट में, आप उस क्रम का उपयोग नहीं मिलता है, तो आप वास्तव में यात्रा अपने आप को संभालने के लिए है।
स्विफ्ट:
एक संक्षिप्त संस्करण, from here:
scrollview.subviews.map { $0.removeFromSuperview() }
(here से) यह करने के लिए एक अधिक वर्णनात्मक तरीका scrollview.subviews
मान लिया गया है:
let subviews = self.scrollView.subviews
for subview in subviews{
subview.removeFromSuperview()
}
मैं तुम्हें जरा सोचो सावधान रहना होगा और स्क्रॉल सूचक सलाखों को मिटाना नहीं है।
एडम को द्वारा दिया गया कोड छोटा और सुरुचिपूर्ण है लेकिन यह क्षैतिज और लंबवत स्क्रॉल संकेतक को हटा सकता है।
मैं आमतौर पर
for (UIView *v in scrollView.subviews) {
if (![v isKindOfClass:[UIImageView class]]) {
[v removeFromSuperview];
}
}
कर Suposing आप की जरूरत नहीं है UIImageView की पुस्तक मैन्युअल रूप में जोड़ा।
मैं वैसे भी संकेतकों का उपयोग नहीं कर रहा हूँ। हालांकि अच्छा बिंदु।+1 – Moshe
जो मैंने परीक्षण किया है, उसके लिए मैंने स्क्रॉल संकेतकों को नहीं हटाया, मेरा मानना है कि ऐसा इसलिए है क्योंकि UIScrollView जब भी इसे प्रदर्शित करने की आवश्यकता होती है, तो संकेतक लोड करता है, लेकिन यह ध्यान देने योग्य एक अच्छा बिंदु है। – koo
असल में मुझे लगता है कि यह एक अच्छा समाधान नहीं है क्योंकि क्या होगा यदि आपके पास UIImageView सबव्यूव्स हैं जिन्हें आप निकालना चाहते हैं? – Tony
यदि आप scrollview.subviews में uiimageviews को हटाना चाहते हैं, और आप लंबवत और क्षैतिज संकेतक भी रखना चाहते हैं। आप दृश्यों की पहचान करने के लिए एक विशेष "टैग" सेट कर सकते हैं और लंबवत और क्षैतिज संकेतक को बहिष्कृत कर सकते हैं जिनके टैग डिफ़ॉल्ट रूप से 0 हैं।
रिकार्डो डी सिल्लो के अलावा, मेरे मामले में मेरे पास एक टेबल दृश्य था जिसमें उन सबव्यूज़ में छवियां थीं जिन्हें मैं निकालना चाहता था।
for (UIView *v in self.tableview.subviews) {
if ([v isKindOfClass:[UIImageView class]]) {
[v removeFromSuperview];
}
}
हटाने का! यदि कमांड में है, और scrollview
से self.tableview
को सभी छवियों को हटा दें, लेकिन तालिका दृश्य को छूटे रहें।
पिछले एक जवाब से स्विफ्ट संक्षिप्त संस्करण के पूरक (स्विफ्ट 3.0 तैयार):
_ = scrollView.subviews.filter { $0 is UIImageView }.map { $0.removeFromSuperview() }
__Swift__ संस्करण है [यहां] (http://stackoverflow.com/a/27065076/607368) –