2010-11-06 8 views
9

मेरे एप्लिकेशन में 3 टैब बार आइटम हैं, प्रत्येक एक अलग दृश्य नियंत्रक के लिए मैप किया गया है। मेरी समस्या यह है कि पहला नियंत्रक एक यूनाविगेशन नियंत्रक है, और यह लगभग 3 स्तरों को गहरा कर देता है। मुझे नेविगेशन के साथ कोई समस्या नहीं है, लेकिन जब मैं एक अलग टैब बार आइटम पर क्लिक करता हूं और फिर जब मैं पहली टैब बार आइटम (यूआईएनएवी नियंत्रक वाला एक) पर वापस आ जाता हूं, तो मैं इसे वापस रीसेट करना पसंद करूंगा नौसेना अनुक्रम में पहला नियंत्रक।टैब बार पर क्लिक होने पर पहले नियंत्रक को UINavigationController रीसेट करें

मैंने पढ़ा है आप की तरह कुछ करने के लिए है कि:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
{ 
    [[self navigationController] popViewControllerAnimated:NO]; 
} 

लेकिन मुझे यकीन है, जहां मैं इस विधि रखना चाहिए नहीं कर रहा हूँ। टैब बार नियंत्रक के लिए प्रतिनिधि कौन है? यह AppDelegate में सेटअप है ... क्या यह वहां जाना चाहिए?

धन्यवाद।

उत्तर

12

ठीक है, आपके AppDelegate जब आप UITabBarController पैदा कर रहे आप टैब बार नियंत्रक के प्रतिनिधि सेट स्वयं हो सकता है। फिर आप टैबबार डाल सकते हैं: didSelectItem: आपके ऐपडिलेगेट में विधि और जब भी उपयोगकर्ता UITabBarItem को टैप करता है तो उसे कॉल किया जाना चाहिए। मैं आपके ऐपडिलेगेट में एक इंस्टेंस वैरिएबल प्रॉपर्टी तैयार करूंगा और यूआईटीएबीबारआईटम का संदर्भ रखूंगा जिसका उपयोग एनवी कंट्रोलर टैब के लिए किया जाता है (चलिए इसे टैबबारैटफोरनव कंट्रोलर टैब कहते हैं)। बजाय UINavigationController पर: तुम भी नव नियंत्रक कि कि पहले टैब में रहती है, ताकि आप AppDelegate से यह नियंत्रित कर सकते हैं के लिए एक संदर्भ होना चाहिए

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
{ 
    if (item != self.tabBarItemForNavControllerTab) { 
     [self.navControllerInFirstTab popToRootViewControllerAnimated:NO]; 
    } 
}

आप popToRootViewControllerAnimated उपयोग कर सकते हैं (यह navControllerInFirstTab कहते हैं) अलग-अलग ढेर से प्रत्येक को पॉपिंग करने का।

+0

हम्म ... यह सही समझ में आता है, लेकिन मुझे टैबबार नहीं मिल रहा है: क्या चयन करें: जवाब देने के लिए (मेरे पास अभी एक NSLog() कथन है, और कुछ भी दिखाई नहीं दे रहा है)। मैंने [tabBarController setDelete: self] सेट किया है; लेकिन अभी भी कुछ नहीं। – rpheath

+2

ठीक है, मैंने इसे समझ लिया। मुझे '- (शून्य) टैबबार नियंत्रक का उपयोग करना पड़ा: (UITabBarController *) tabBarController किया गया चयन दृश्य नियंत्रक: (UIViewController *) इसके बजाय नियंत्रक 'देखें। धन्यवाद! – rpheath

1

आप tabBar के लिए प्रतिनिधि के रूप में अपने आप को स्थापित करने और लागू करने की आवश्यकता - tabBar: didSelectItem: आप अपने विचार [[आत्म navigationController] viewControllers] जो UIViewControllers का एक NSArray देता है, तो पॉप के लिए नेविगेशन नियंत्रक पूछना सरणी में प्रत्येक दृश्य नियंत्रक जब तक आप मूल दृश्य तक नहीं पहुंच जाते। (अर्थात AppDelegate)

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarDelegate_Protocol/Reference/Reference.html

संबंधित मुद्दे