2010-11-04 21 views

उत्तर

118

scrollViewUIScrollView का उदाहरण बनें।

उद्देश्य-सी में, यह बहुत आसान है। बस, 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() 
} 
+3

यह निकाल देंगे स्क्रॉल संकेतक अगर वे प्रदर्शित करने के लिए सेट हैं, लेकिन ओपी उन टिप्पणियों से संबंधित नहीं है जैसा कि नीचे दी गई टिप्पणियों में उल्लेख किया गया है। – Jessedc

+0

+1, बहुत बढ़िया .. यह सिर्फ एक ही पंक्ति है :) – mAc

+2

क्या यह मुख्य धागे पर है? – Plot

32

मैं तुम्हें जरा सोचो सावधान रहना होगा और स्क्रॉल सूचक सलाखों को मिटाना नहीं है।

एडम को द्वारा दिया गया कोड छोटा और सुरुचिपूर्ण है लेकिन यह क्षैतिज और लंबवत स्क्रॉल संकेतक को हटा सकता है।

मैं आमतौर पर

for (UIView *v in scrollView.subviews) { 
    if (![v isKindOfClass:[UIImageView class]]) { 
    [v removeFromSuperview]; 
    } 
} 

कर Suposing आप की जरूरत नहीं है UIImageView की पुस्तक मैन्युअल रूप में जोड़ा।

+0

मैं वैसे भी संकेतकों का उपयोग नहीं कर रहा हूँ। हालांकि अच्छा बिंदु।+1 – Moshe

+0

जो मैंने परीक्षण किया है, उसके लिए मैंने स्क्रॉल संकेतकों को नहीं हटाया, मेरा मानना ​​है कि ऐसा इसलिए है क्योंकि UIScrollView जब भी इसे प्रदर्शित करने की आवश्यकता होती है, तो संकेतक लोड करता है, लेकिन यह ध्यान देने योग्य एक अच्छा बिंदु है। – koo

+4

असल में मुझे लगता है कि यह एक अच्छा समाधान नहीं है क्योंकि क्या होगा यदि आपके पास UIImageView सबव्यूव्स हैं जिन्हें आप निकालना चाहते हैं? – Tony

1

यदि आप scrollview.subviews में uiimageviews को हटाना चाहते हैं, और आप लंबवत और क्षैतिज संकेतक भी रखना चाहते हैं। आप दृश्यों की पहचान करने के लिए एक विशेष "टैग" सेट कर सकते हैं और लंबवत और क्षैतिज संकेतक को बहिष्कृत कर सकते हैं जिनके टैग डिफ़ॉल्ट रूप से 0 हैं।

2

रिकार्डो डी सिल्लो के अलावा, मेरे मामले में मेरे पास एक टेबल दृश्य था जिसमें उन सबव्यूज़ में छवियां थीं जिन्हें मैं निकालना चाहता था।

for (UIView *v in self.tableview.subviews) { 
    if ([v isKindOfClass:[UIImageView class]]) { 
    [v removeFromSuperview]; 
    } 
} 

हटाने का! यदि कमांड में है, और scrollview से self.tableview को सभी छवियों को हटा दें, लेकिन तालिका दृश्य को छूटे रहें।

0

पिछले एक जवाब से स्विफ्ट संक्षिप्त संस्करण के पूरक (स्विफ्ट 3.0 तैयार):

_ = scrollView.subviews.filter { $0 is UIImageView }.map { $0.removeFromSuperview() } 
संबंधित मुद्दे