8

Let यहाँ कहना के एक दृश्य को नष्ट कैसे करूँ मेरी ढेर लेआउटUINavigationController: मैं एक ढेर

View3  --> Top of the stack 
View2 
View1 
HomeView --> Bottom of the stack 

तो मैं अब View3 में हूँ, अगर मैं Home बटन पर क्लिक करें, मैं HomeView लोड करना चाहते हैं, जिसका अर्थ है कि है मुझे View3, View2, और View1 पॉप करने की आवश्यकता है। लेकिन अगर मैं View3 पॉप करता हूं, View2 प्रदर्शित किया जाएगा। मुझे वह नहीं चाहिए। मुझे View3, View2, और View1 हटा दिया जाना चाहिए, और HomeView प्रदर्शित किया जाएगा। कोई विचार कैसे?

उत्तर

16

आप popToRootViewControllerAnimated: का उपयोग जड़ ViewController को पाने के लिए कर सकते हैं। यह रूट व्यू कंट्रोलर को छोड़कर स्टैक में सभी व्यू कंट्रोलर को पॉप आउट करेगा। आपके मामले में, यह होम व्यू होगा।

[self popToRootViewControllerAnimated:YES]; 


ढेर में एक विशेष दृश्य के लिए पाने के लिए आपको popToViewController:animated: मान लिया जाये कि आप तीसरे ViewController (नीचे से ऊपर) पॉप करना चाहते हैं का उपयोग कर सकते हैं।

NSArray* viewControllersInStack = self.navigationController.viewControllers; 
UIViewController* targetViewController = [viewControllersInStack objectAtIndex:2]; 
[self.navigationController popToViewController:targetViewController animated:YES]; 
+0

मेरे पास उदाहरण में रूट के रूप में होमव्यू है, लेकिन यह मेरे कोड में नहीं है। TYVM :) –

+0

मैं इसे आज़माता हूं, लेकिन यह कहा गया है कि 'होम व्यू' अनिर्धारित है, जो समझ में आता है क्योंकि मैं 'व्यू 3' में हूं इसलिए मेरे पास 'होम व्यू' का संदर्भ नहीं है, क्या यह सही है? –

+0

हां आपको 'होम व्यू' के संदर्भ की आवश्यकता है, और आप इसे 'self.navigationController.viewControllers' प्रॉपर्टी –

2

उपयोग popToViewController

[self.navigationController popToViewController:homeView animated:YES]; 
+0

यह कैसे काम करता है? प्रलेखन ने कहा कि आप एक विशिष्ट दृश्य नियंत्रक के लिए पॉप करते हैं, लेकिन मैं seg गलती प्राप्त करता रहता हूं। यू लगता है कि आप मुझे एक त्वरित नमूना कोड दे सकते हैं? –

+0

जब तक विशिष्ट दृश्य नियंत्रक स्टैक के शीर्ष पर नहीं है तब तक यह दृश्य पॉप-अप होता है। क्या आप एक त्रुटि लॉग और कुछ कोड भी पोस्ट कर सकते हैं? – Bird

+0

ठीक है, मान लीजिए कि मैं 'aViewController' में हूं (मान लीजिए कि यह पहले से ही स्टैक पर है), मैं 'bViewController' दबाता हूं, फिर 'bViewController' में, मैं' popToViewController: aViewController', ठीक है लेकिन यह कहा जाता है कि 'aViewController' अपरिभाषित है , जो अब समझ में आता है क्योंकि मैं अब 'bViewController' में हूं। मेरे पास 'aViewController' का संदर्भ नहीं है। क्या मैं कुछ भूल रहा हूँ? –

0

उपयोग ...

[self.navigationController popToRootViewControllerAnimated:: हाँ] आपके मामले में, इस view2 हो सकता है;

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