2013-07-29 5 views
19

स्टोरीबोर्ड का उपयोग करके UITabBarController में मैं कुछ टैब पर कैसे स्विच कर सकता हूं? मैं नीचे लेकिन सफलता नहीं मिली कोड की कोशिश की है (टैब चयनित न हो):मैं स्टोरीबोर्ड का उपयोग कर UITabBarController में चयनित टैब कैसे सेट करूं?

self.tabBar.selectedIndex = 3; 

ईमानदारी से मैं स्टोरीबोर्ड बिना निब फ़ाइलों का उपयोग किया है और इस कोड ऊपर

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions 
      :(NSDictionary *)launchOptions 

में ठीक काम किया लेकिन अब मैं कर सकते हैं ' टैब को प्रोग्रामिक रूप से सेट नहीं करते हैं। शायद एक और समस्या है जो टैब का चयन करने के लिए जुड़ा हुआ नहीं है। मैं टैब कैसे बदल सकता हूं?

+1

जब आप "सफलता के बिना" कहते हैं, वास्तव में आप क्या मतलब है? कंपाइलर त्रुटि? क्या टैब चयनित नहीं हो रहा है? – Stavash

+0

ओह, धन्यवाद, यह बहुत महत्वपूर्ण टिप्पणी है। हां टैब चयनित नहीं हो रहा है। –

+0

सेट के बारे में क्या चुना गया ... तो इस तरह [self.tabBar setSelectedIndex: 3]; – Yanchi

उत्तर

27

UITabBarController के अपने उदाहरण ले लो तो selectedViewController गुण सेट:

yourTabBarController.selectedViewController=[yourTabBarController.viewControllers objectAtIndex:3];//or whichever index you want 
16

सिकंदर, मुझे लगता है कि आपकी समस्या को अपने टैब बार का सही उदाहरण हो रही है। अपने टैब बार अपने रूट दृश्य नियंत्रक है, तो आप इसे इस तरह अपने AppDelegate अगर didFinishLoading विधि में कर सकते हैं:

UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController; 
    [tabBar setSelectedIndex:3]; 

इसे आज़मा कर देखें और मुझे परिणाम बता दें।

+3

* स्विफ्ट टिप्पणी - 18 महीने बाद यदि आप इसे ऊपर दिखाए गए अनुसार अपने ऐप डिलीगेट में स्विफ्ट में परिवर्तित करते हैं तो आपको अपेक्षित परिणाम मिलेंगे। स्विफ्ट अनुवाद है: 'टैबबार दें: UITabBarController = self.window? .rootViewController के रूप में! UITabBarController' –

4

यह stroryboard भी में काम करेंगे ...

[self.tabBarController setSelectedIndex:3]; इस के साथ .h

में UITabBarControllerDelegate जोड़ने और फिर इस delegate विधि

- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController 
{ 
    return (theTabBarController.selectedViewController != viewController); 
} 
2

का उपयोग आप इस स्टोरीबोर्ड भी उपयोग कर केवल प्राप्त कर सकते हैं। TabBarController से अपने ViewController पर Ctrl-drag, और 'रिलेशनशिप सेग्यू, व्यू कंट्रोलर' चुनें। आपके द्वारा चुने गए पहले व्यू कंट्रोलर डिफ़ॉल्ट/प्रारंभिक व्यू कंट्रोलर होंगे।

8

* स्विफ्ट टिप्पणी - 18 महीने बाद यदि आप Yanchi के समाधान को अपने ऐप में स्विफ्ट में परिवर्तित करते हैं तो आपको अपेक्षित परिणाम मिल जाएगा। स्विफ्ट अनुवाद है:

let tabBar: UITabBarController = self.window?.rootViewController as! UITabBarController 

tabBar.selectedIndex = 1 
+4

स्पेस बंदर धन्यवाद। आपका जहाज सुरक्षित रूप से जमीन हो सकता है। –

+0

धन्यवाद मेरे दिन बचाया। –

0

तुम भी स्टोरीबोर्ड का उपयोग कर "User Defined Runtime Attributes" में डिफ़ॉल्ट टैब सेट कर सकते हैं।

दाएँ फलक का चयन पहचान निरीक्षक में, स्टोरीबोर्ड से अपने टैब बार नियंत्रक का चयन करें और एक विशेषता जोड़ें:

 
Key Path : selectedIndex 
Type  : Number 
Value : 2 (whatever number you want) 
संबंधित मुद्दे