5

का उपयोग कर AppDelegate में कस्टम नेविगेशन नियंत्रक का उपयोग कैसे करें मुझे ऐपडिलेगेट में नेविगेशन कंट्रोलर से संबंधित कोई समस्या है। मैं एक स्टोरीबोर्ड है, जो इस तरह दिखता उपयोग कर रहा हूँ:स्टोरीबोर्ड

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
//... 
} 

जब:

Storyboard

पुश सूचनाएं का उपयोग करने का एक परिणाम के रूप में, मैं अपने AppDelegate फ़ाइल में निम्नलिखित समारोह मिल गया है अधिसूचना आती है मैं "विस्तार दृश्य" शुरू करना चाहता हूं - नियंत्रक जिसे पैरामीटर के रूप में आईडी की आवश्यकता होती है। यह आईडी मेरे पेलोड का हिस्सा है, इसलिए यह didReceiveRemoteNotification में मौजूद है।

मैं follwing के लिए करना चाहते हैं:

DetailView *detail = [storyboard instantiateViewControllerWithIdentifier:@"detail"]; 

detail.conversationID = theID; 

[self.navigationController pushViewController:detail animated:YES]; 

इस बिंदु पर मेरा प्रश्न है: कैसे मैं नेविगेशन नियंत्रक मिल सकता है? मैंने "getNavigationControllerByIdentifier" जैसे किसी फ़ंक्शन की खोज की है या ऐसा कुछ है, लेकिन कुछ भी नहीं मिला है। मैं सीधे विस्तार दृश्य नियंत्रक को तुरंत चालू नहीं कर सकता क्योंकि नेविगेशनबार वहां गायब है।

मुझे आशा है कि आप समझते हैं कि मैं क्या मतलब है - अगर आपको लगता है मेरी दृष्टिकोण को पूरी तरह से गलत है मुझे सही करें; ओ)

बस एक और छोटा सा जानकारी: यह है कि विस्तार में वापस बटन देखें नियंत्रक चला जाता है मेरे लिए महत्वपूर्ण नहीं है टेबल व्यू पर वापस - यह पर्याप्त है जब यह "लोड टेबल व्यू" बटन के साथ नियंत्रक से लिंक होता है।

मदद के लिए धन्यवाद!

उत्तर

8

UINavigationControllerUIViewController सबक्लास है और इसे स्टोरीबोर्ड में पहचानकर्ता भी सौंपा जा सकता है।

UINavigationController बनाने के लिए -instantiateViewControllerWithIdentifier: का उपयोग करें और यह रूट व्यू कंट्रोलर है। आपको कोड में सभी इंटरमीडिएट नियंत्रकों को तुरंत चालू करने और उचित नेविगेशन स्टैक सेट अप करने के लिए नेविगेशन नियंत्रक की viewControllers संपत्ति को संशोधित करने की आवश्यकता हो सकती है। इस तरह जब ऐप विस्तार दृश्य में लॉन्च होता है, तो वे अपना रास्ता वापस देख सकते हैं जैसे कि उन्होंने इंटरफ़ेस के माध्यम से मैन्युअल रूप से सभी तरह से धक्का दिया था।

+0

धन्यवाद। अब यह स्पष्ट है और काम करता है :-) (बाउंटी केवल 10 घंटों में उपलब्ध है इसलिए चिंता न करें; ओ)) –

4

आप अपनी विंडो ऑब्जेक्ट पर rootViewController का उपयोग कर सकते हैं।

UIViewController *rootViewController = self.window.rootViewController; 
// You now have in rootViewController the view with your "Hello world" label and go button. 

// Get the navigation controller of this view controller with: 
UINavigationController *navigationController = rootViewController.navigationController; 

// You can now use it to push your next view controller: 
DetailViewController *detail = [navigationController.storyboard instantiateViewControllerWithIdentifier:@"detail"]; 
detail.conversationID = theID; 
[navigationController pushViewController:detailViewController animated:YES];