2010-10-27 5 views
5

हटाएं से UITabBarItem को कैसे हटाया जा सकता हूं?UITabBarItem

मैंने कुछ भी नहीं किया है, क्योंकि मुझे Google खोजों या UITabBar, UITabBarController, या UITabBarItem के लिए प्रलेखन से कुछ भी नहीं मिला है।

अग्रिम धन्यवाद! :)

+0

हाय @esqew, आपने पहले से क्या प्रयास किया है? http://stackoverflow.com/questions/how-to-ask – jcolebrand

+0

मैंने कुछ भी करने की कोशिश नहीं की है, क्योंकि मुझे Google खोजों या 'UITabBar', 'UITabBarController', या' UITabBarItem' के लिए प्रलेखन से कुछ भी नहीं मिला है। – esqew

उत्तर

9

UITabBar में NSArray आइटम संग्रह है। चूंकि आइटम प्रॉपर्टी एक एनएसएआरएआरई है और NSMutableArray नहीं है, इसलिए आपको उस ऑब्जेक्ट से हटाए गए मौजूदा एनएएसएआरएआर को बनाना होगा जिसे आप निकालना चाहते हैं, फिर आइटम प्रॉपर्टी को नई सरणी पर सेट करें।

/* suppose we have a UITabBar *myBar, and an int index idx */ 
NSMutableArray modifyMe = [[myBar items] mutableCopy]; 
[modifyMe removeObjectAtIndex:idx]; 
NSArray *newItems = [[NSArray alloc] initWithArray:modifyMe]; 
[myBar setItems:newItems animated:true]; 
+3

याद रखें, '- [NSArray mutableCopy]' आपका मित्र है। इसके अलावा, '- [UITabBar setItems: एनिमेटेड:] 'को अनदेखा न करें। –

+0

http://developer.apple.com भी आपका मित्र है;) –

4

माइक कैरोन की सलाह will throw an exception यदि आप एक tabBar कि एक नियंत्रक के अंतर्गत आता है संशोधित करने के लिए करना चाहते हैं।

आईओएस 3.0 में और बाद में, आप जब यह एक टैब बार नियंत्रक वस्तु के साथ जुड़ा हुआ है टैब बार संशोधित करने के लिए तरीके और इस वर्ग के गुण का उपयोग करने के प्रयास नहीं करना चाहिए। को संशोधित करने से इस प्रकार टैब बार अपवाद को फेंकने में परिणाम देता है। इसके बजाए, टैब बार में संशोधनों या आइटम टैब बार नियंत्रक इंटरफ़ेस के माध्यम से होने चाहिए। आप अभी भी एक टैब बार ऑब्जेक्ट को सीधे संशोधित कर सकते हैं कि टैब बार नियंत्रक से संबद्ध नहीं है।

इस मामले में self.tabBarItem=nil इसे हटा देगा।

+0

आईओएस 11 में, self.tabBarItem = nil केवल होल्डिंग स्पॉट को खाली बनाता है, यह वास्तव में "हटाए गए" आइटम को भरने के लिए आइटम को घुमाता नहीं है। :( –

+1

https://stackoverflow.com/a/9908361/856925 का एक उत्तर है जो अभी भी काम करता है - viewcontroller को tabbarcontroller viewcontrollers सूची को हटा दें। –

0

नोट: इस आईओएस 11 में काम नहीं प्रतीत होता है यह आईओएस से 10

यह एक मामूली भयानक जवाब, मेरी राय में, भाग में, क्योंकि यह मानव इंटरफ़ेस के दिशा-निर्देशों को नष्ट कर रहा है में अब भी अच्छा था, लेकिन सभी एक ही यह सफाई से काम करने के लिए लगता है:

UITabBar *oldbar = self.tabBarController.tabBar; 
UITabBar *newbar = [[UITabBar alloc] initWithFrame:CGRectMake(0,0,oldbar.frame.size.width,oldbar.frame.size.height)]; 
NSMutableArray *olditems = [[oldbar items] mutableCopy]; 
[olditems removeObjectAtIndex:0]; 
NSArray *newitems = [[NSArray alloc] initWithArray:olditems]; 
[newbar setItems:newitems animated:false]; 
[oldbar addSubview:newbar]; 

परतों यह सफाई से वर्ष tabbar के शीर्ष पर है कि, और यह अपनी कार्यक्षमता को बनाए रखता है।