2011-09-09 17 views
7

मेरे ऐप में नेविगेशन के लिए मैं एक UITabBarController का उपयोग कर रहा हूं। यह ठीक काम करता है, लेकिन मेरे व्यू कंट्रोलर में से एक में मैं एक और दृश्य नियंत्रक को टैबबार दृश्य में धक्का देना चाहता हूं। दूसरे शब्दों में मैं चयनित व्यू कंट्रोलर को दूसरे के साथ बदलना चाहता हूं। मैं निम्नलिखित कोड के साथ इस कर रहा हूँ:एक अन्य दृश्य नियंत्रक को एक UITabBarController दृश्य में पुश करें

self.tabBarController.selectedViewController = self.otherViewController; 

मेरी TabBarController otherViewController शामिल नहीं है में viewControllers की सूची। यह चाल आईओएस 4.3 में ठीक काम करती है, लेकिन आईओएस 5 इसे पसंद नहीं करता है।

क्या कोई भी आईओएस 5 द्वारा स्वीकार किए गए समाधान को जानता है?

उत्तर

12

आप अन्य दृश्य नियंत्रक के साथ tabbar में उस दृश्य नियंत्रक बदलना चाहते हैं? यदि ऐसा है, तो आपको एक नया सेट करके टैबबार में व्यू कंट्रोलर प्रॉपर्टी को संपादित करना होगा। यह हो सकता है कुछ की तरह:

UIViewController *thisIsTheViewControllerIWantToSetNow; 
int indexForViewControllerYouWantToReplace; 

NSMutableArray *tabbarViewControllers = [self.tabbar.viewControllers mutableCopy]; 

[tabbarViewControllers replaceObjectAtIndex:indexForViewControllerYouWantToReplace withObject:thisIsTheViewControllerIWantToSetNow]; 

self.tabbar.viewControllers = tabbarViewControllers; 

[tabbarViewControllers release]; 
+0

यह काम करता है, लेकिन आप एक NSMutableArray (अपने ViewController सरणी के एक mutableCopy) ले जाना है –

+0

अरे हाँ, आप सही है, मैं आपके द्वारा लिखा गया हो कि Xcode के बिना मुझे replaceObjectAtIndex एहसास कराना: withObject तब तक अस्तित्व में नहीं है जब तक कि यह एक NSMUTABLEArray –

+0

है, लेकिन टैबबार का आइकन गायब है और जब मैं किसी अन्य टैब को स्पर्श करता हूं और वापस स्पर्श करता हूं, तो दृश्य बदलते समय यह "अंतराल" होता है, मुझे लगता है – user1561904

0

आप इस टैब पर केवल एक नेविगेशन नियंत्रक या इसी तरह का उपयोग नहीं कर सकते हैं?

वैसे भी यह काम करना चाहिए:

NSMutableArray *controllers = [NSMutableArray arrayWithArray:rootTabBarController.viewControllers]; 
[controllers replaceObjectAtIndex:rootTabBarController.selectedIndex withObject: newController]; 
rootTabBarController.viewControllers = controllers; 
संबंधित मुद्दे