12

में UITabBar बटन दबाकर नौसिखिया प्रश्न के लिए खेद है। मेरे मुख्य विंडो दृश्य में एक UITabBar है और प्रत्येक टैब के लिए UINavigationControllers की एक सरणी है। संरचना आईपॉड ऐप के समान है जिसमें मुख्य विचार टैबबार आइटमों का चयन करके देखा जा सकता है और फिर उपयोगकर्ता स्टैक पर विचारों को दबाकर नेविगेशन नियंत्रक के साथ आगे ड्रिल कर सकता है।प्रोग्रामिंग रूप से Xcode

मैं जो करना चाहता हूं वह कोड में किसी भी सबव्यू से नीचे टैबबार बटन दबाए जाने के बराबर करना है (यानी, टैबबार की चयनित संपत्ति को बदलें और पहला दृश्य नियंत्रक लॉन्च करें टैब के लिए)।

किसी भी मदद की सराहना की जाएगी।

डेव

उत्तर

23
[myTabBarController setSelectedIndex:index] 

संपादित करें: टिप्पणी से भाग 2 प्रश्न का उत्तर देना:

आप एक अलग टैब पर स्विच करने के लिए AppDelegate में एक विधि को परिभाषित कर सकते हैं।

और आप कहीं से भी AppDelegate की पकड़ मिलता है और एक संदेश भेज सकते .. कुछ की तरह:

MyAppDelegate *appDelegate = (MyAppDelegate*) [[UIApplication sharedApplication] delegate]; 
[appDelegate SwitchToTab:index] 
+0

मेरे लिए, Tabbarcontroller विधि को कॉल करके सेटिंग उचित लगता है! लेकिन यह जांच करेगा इससे कोई फर्क नहीं पड़ता! – prakash

+0

हां, हो सकता है कि आप सही हों - मैंने अपने कोड का एक हिस्सा लिया जहां मैंने Tabbarcontroller – Vladimir

+0

के बिना टैबबार का उपयोग किया। यह बहुत अच्छा धन्यवाद है। ठीक है, बेवकूफ सवाल भाग 2. मैं अपने कोड से मूल वस्तु कैसे प्राप्त करूं? वास्तविक टैबबार रूट व्यू कंट्रोलर से कोड में स्थापित किया गया है। मैं टैबबार की संपत्ति को सेट करने में सक्षम होना चाहता हूं लेकिन एक और दृश्य नियंत्रक से जो स्टैक पर धकेल दिया गया था। क्या मैं काफी अच्छी तरह समझा रहा हूं। ऐसा लगता है कि मुझे अपने आप के बराबर होना चाहिए, लेकिन पेड़ के शीर्ष पर मूल वस्तु के लिए। फिर से नए सवाल के लिए खेद है, मुझे लगता है कि मुझे लगता है कि मेरी सोच में कुछ मौलिक याद आ रही है। –

11

वैकल्पिक रूप से ...

[self.parentViewController.tabBarController setSelectedIndex:3]; 
3

मैं प्रकाश के लिए जवाब देना चाहते हैं, लेकिन यह पता नहीं लगा सकता कि कैसे। हो सकता है कि जब तक मेरा स्कोर ऊपर न हो जाए तब तक मैं अवरुद्ध हूं।

किसी भी तरह, मुझे आशा है कि यह किसी को मदद मिलती है:

मैं कर रहा था क्या प्रकाश ने कहा, और कुछ भी नहीं हो रहा था। यह क्योंकि मेरे एप्लिकेशन प्रतिनिधि के लिए सूचक प्राप्त करने के लिए है, मैं यह कर रहा था:

AppDelegate_Phone *appDelegate = [[AppDelegate_Phone alloc] init]; 

जब मैं चाहिए यह कर दिया गया है:

AppDelegate_Phone *appDelegate = (AppDelegate_Phone *) [[UIApplication sharedApplication] delegate]; 

नौसिखिया गलती।

ज फ़ाइल - -

UITabBarController *_pTabBarController; 
@property (nonatomic, retain) IBOutlet UITabBarController *_pTabBarController; 

.m File - 
// synthesize it 
@synthesize _pTabBarController;  

At initial load 

// You can write one function to add tabBar - 

// As you have already mentioned you have created an array , if not 

_pTabBarController = [[UITabBarController alloc] init]; 
    NSMutableArray *localViewControllersArray = [[NSMutableArray alloc] initWithCapacity:4]; 
    UINavigationController *theNavigationController; 

    _pController = [[Controller alloc] initStart]; 
    _pController.tabBarItem.tag = 1; 
    _pController.title = @"Baranches"; 
    theNavigationController = [[UINavigationController alloc] initWithRootViewController:_pController]; 
    theNavigationController.tabBarItem.tag = 1; 
    theNavigationController.tabBarItem.image = [UIImage imageNamed:@"icon_branches.png"]; 
    [localViewControllersArray addObject:theNavigationController]; 
    [theNavigationController release]; 

आप अपनी आवश्यकताओं

self._pTabBarController.selectedIndex = 0; // as per your requirements 
0

इस के लिए, तुम सिर्फ UITabBar नियंत्रक लेने की जरूरत मेरे लिए सूचकांक लेकिन यह नेविबर कंट्रोलर की इंडेक्स को सक्रिय इंडेक्स के रूप में हाइलाइट किया, लेकिन जब यह हाइलाइट किया गया कि मैं ndex यह वास्तव में tabbarmenu आइटम द्वारा सुझाए गए एक अलग दृश्य नियंत्रक पर था।

बस यह जोड़ना चाहता था कि मैंने इसे अपने व्यू कंट्रोलर से उपयोग किया, और ऐसा लगता है कि वास्तव में मेन्यूटेम दबाए गए किसी ने किया; कोड से:

UITabBarController *MyTabController = (UITabBarController *)((AppDelegate*) [[UIApplication sharedApplication] delegate]).window.rootViewController; 
[MyTabController setSelectedIndex:1]; 

इस पोस्ट/उत्तर के लिए धन्यवाद, यह मेरी परियोजना में बहुत मदद करता है।

0
[self.parentViewController.tabBarController setSelectedIndex:3]; 

चयनित अनुसार सूचकांक सेट कर सकते हैं की तुलना में

0

मैं कुछ ऐसा करना चाहता था लेकिन एक्सकोड 6.4 आईओएस (8.4) सेट के लिए चयन किए गए इंडेक्स स्वयं नहीं करेगा।

टैब बार के मद्देनजर नियंत्रक एक सूची में जोड़ें और फिर कुछ समारोह में निम्नलिखित की तरह कुछ का उपयोग करें और फिर इसे कहते हैं:

FirstViewController *firstVC = [[self viewControllers] objectAtIndex:0]; 
[self.selectedViewController.view removeFromSuperview] 
[self.view insertSubview:firstVC.view belowSubview:self.tabBar]; 
[self.tabBar setSelectedItem:self.firstTabBarItem]; 
self.selectedViewController = firstVC; 

आप अपने didSelectedItem अंदर पहले से ही इसी तरह के कोड हो सकता है ..

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 

    if (item == self.firstTabBarItem) 
     // Right here 
    } 
    else if ... 
} 
संबंधित मुद्दे