2010-09-22 11 views
11

HI, मेरे पास पेरेंटव्यू -> एकाधिक बालदृश्य हैं। जब मैं पेरेंटव्यू में [self bringSubviewToFront: childview] का उपयोग करता हूं, तो यह ठीक काम करता है। लेकिन जब मैं [self bringSubviewToFront: grandchildview] का उपयोग पेरेंटव्यू में करता हूं, तो यह काम नहीं करता है? कोई मदद कृपया?bringSubviewToFront समस्या?

उत्तर

52

-[UIView bringSubviewToFront:] विधि केवल प्रत्यक्ष बच्चों के लिए काम करती है, न कि पोते-पोते। याद रखें कि दृश्य पदानुक्रम एक पेड़ है, और आम तौर पर एक दृश्य केवल अपने "माता-पिता" (या पर्यवेक्षण) और इसके प्रत्यक्ष "बच्चों" (या सबव्यू) के बारे में जानता है। आप इस तरह कुछ करने के लिए की आवश्यकता होगी:

// First, get the view embedding the grandchildview to front. 
[self bringSubviewToFront:[grandchildview superview]]; 
// Now, inside that container view, get the "grandchildview" to front. 
[[grandchildview superview] bringSubviewToFront:grandchildview]; 
+2

काम ठीक ... महान कोड जाँच समाधान से तेज संस्करण के साथ मेरे योगदान! –

+0

यह रिकर्सिवली से बेहतर होगा –

+1

@PizzaiolaGorgonzola मनमाने ढंग से घोंसले के स्तर के लिए, हाँ, एक पुनरावर्ती विधि जाने का रास्ता होगा। हालांकि, इस साधारण मामले के लिए यह अधिक हो जाएगा। – DarkDust

0

self.bringSubviewToFront(self.grandchildview.superview!) 
self.grandchildview.superview!.bringSubviewToFront(self.grandchildview)