2013-11-20 7 views
7

जो मैं करना चाहता हूं वह बहुत आसान लगता है, लेकिन मुझे वेब पर कोई जवाब नहीं मिल रहा है। मेरे पास रूट व्यू कंट्रोलर के रूप में लॉगिन स्क्रीन है और फिर टैब बार नियंत्रक है और प्रत्येक टैब में मेरे पास नेविगेशन नियंत्रक है।स्टोरीबोर्ड में रूट व्यू कंट्रोलर पर वापस कैसे जाएं?

मैं स्टोरीबोर्ड का इस्तेमाल किया है और पदानुक्रम नीचे वर्णित है,

Root VC 
    | 
    --- tabbar controller 
      | 
      ---Navigation Controller 
       | 
       --- VC1 

आवश्यकता वापस VC1 से रूट दृश्य नियंत्रक करने के लिए नेविगेट करने के लिए है। हम इसे कैसे प्राप्त कर सकते हैं? कोड निम्नलिखित

+2

आप यह करने के लिए एक खोलना segue उपयोग करना चाहिए। – rdelmar

+0

आपके उत्तर @rdelmar के लिए धन्यवाद, मैं आपके समाधान के लिए सहमत हूं। लेकिन अब जिस मुद्दे का सामना कर रहा हूं वह है, मैं इसे टालने के लिए स्टोरीबोर्ड से बाहर निकलने के लिए बटन आउटलेट को कनेक्ट करने में असमर्थ हूं। यह सुलभ नहीं था, ऐसा लगता है। क्या आप कृपया इस पर मेरी मदद कर सकते हैं। –

+0

मेरा जवाब यहां देखें (http://stackoverflow.com/questions/16158586/app-running-slow-after-loading-viewcontroller-then-unload-about-15-20-times/16160239#16160239), और देखें अगर ऐसा है कि आप इसे करने की कोशिश कर रहे हैं। – rdelmar

उत्तर

3

मुझे "अविवाहित सेग्स" का उपयोग करके मुद्दों का समाधान मिला।

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

- (IBAction)unwindToViewControllerNameHere:(UIStoryboardSegue *)segue { 
//nothing goes here 
} 

चरण 2) अब, अपने स्रोत (उर्फ ध्यान में रखते हुए, कि आप से बाहर निकलना चाहते हैं) आप बस अपने बटन से एक सेग्यू खींचें या जो भी आपके स्रोत दृश्य के नीचे छोटे हरे "EXIT" आइकन पर जाएं। अब कनेक्ट करने का विकल्प होना चाहिए "- unwindToViewControllerNameHere"

यही है, आपका बटन टैप होने पर आपका सीगू अनचाहे होगा। और हम किसी भी व्यू कंट्रोलर को ले जा सकते हैं जिसे हम चाहते हैं और शेष व्यू कंट्रोलर जारी किए जाएंगे।

0

उपयोग

- (void) forRootViewCon { 
    UINavigationController *nav = (UINavigationController*) self.view.window.rootViewController; 
    UIViewController *root = [nav.viewControllers objectAtIndex:0]; 
    [root performSelector:@selector(returnToRoot)]; 
} 

कॉल विधि नाम returnToRoot

- (void)returnToRoot { 
    [self dismissViewControllerAnimated:NO completion:nil]; 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

या

[self.navigationController popToRootViewControllerAnimated:YES]; 
0

यह पर्याप्त होना चाहिए।

[self.navigationController popToRootViewControllerAnimated:YES]; 
0

आप नेविगेशन नियंत्रक में रूट कुलपति सक्षम होना चाहिए:

--- नेविगेशन नियंत्रक - | रूट वीसी | --- टैबबार नियंत्रक | --- VC1

और फिर फोन

[navController popToRootViewControllerAnimated:YES]; 

संपादित करें: मैं तुम्हें एक नेविगेशन नियंत्रक के अंदर एक tabBar नियंत्रक सहित कई मुद्दों है लगता है?

+0

उत्तर के लिए धन्यवाद, लेकिन मैं टैबबार नियंत्रक में नेविगेशन के बारे में जानना चाहता हूं। मुझे लगता है कि नेविगेशन कंट्रोलर -> टैबबार नियंत्रक -> नेविगेशन नियंत्रक जैसे पदानुक्रम होना अच्छा नहीं है। ऐप्पल इसका सुझाव नहीं देगा। –

+0

मेरे पास नेविगेशन नियंत्रक में रूट वीसी है, लेकिन मैं इसे छुपाता हूं। रूट व्यू पर कैसे जाना है? – Gank

2

यदि आपके पास नियंत्रकों पदानुक्रम

तरह

--- नेविगेशन नियंत्रक - | रूट वीसी | --- टैबबार नियंत्रक | --- नेविगेशन नियंत्रक - | --- VC1

और वहाँ VC1 पर एक UIButton है, ताकि के क्लिक पर आप उसका उपयोग जड़ ViewController (रूट वीसी) को स्थानांतरित करना चाहते:

-(void)moveToRootViewController { 

    //Move to root viewController 
    UINavigationController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"mainnav"]; 

    self.view.window.rootViewController = controller; 

} 
यहाँ mainnav

जड़ ViewController की स्टोरीबोर्ड पहचानकर्ता है नेविगेशन नियंत्रक।

ViewControllers hierarchy

सफेद रंग ViewController चित्र के अनुसार एक रूट ViewController है और TabBarController नेविगेशन नियंत्रक के साथ 2 टैब है और आप ViewController UIButton (काले रंग) दूसरे टैब से जड़ ViewController को स्थानांतरित करने के लिए तो ऊपर का उपयोग करता है, तो क्लिक करें कोड।

यदि आपके पास पदानुक्रम --- नेविगेशन नियंत्रक - | रूट वीसी | --- वीसी 1 ---- | --- वीसी 2 ---- |

और VC1 से या तो VC2 से जड़ ViewController (रूट वीसी) को स्थानांतरित करना चाहते का उपयोग करें:

[self.navigationController popToRootViewControllerAnimated:YES]; 
संबंधित मुद्दे