यह करें:
[[self navigationController] dismissModalViewControllerAnimated:YES];
कि तुम वापस कुलपति कि रीति से नेविगेशन नियंत्रक प्रस्तुत करने के लिए मिल जाएगा। इसके बाद आगे की ओर बढ़ना इस बात पर निर्भर करता है कि आपने नेविगेशन नियंत्रक से पहले उन "कुछ विचारों" को कैसे धक्का दिया था।
संपादित - स्पष्टीकरण गहरी जड़ को पाने के लिए ...
यह उन "कुछ दृश्य" की तरह लगता है अंतर्निहित नेविगेशन नियंत्रक के ढेर दूसरे पर कर रहे हैं। यह थोड़ा मुश्किल हो सकता है, क्योंकि उस ढेर में आगे की ओर जाने का साफ तरीका यह है कि अंतर्निहित नेविगेशन नियंत्रक अपने स्वयं के रूट पर पॉप करता है। लेकिन यह कैसे पता चलेगा कि इसके ऊपर मोडल वीसी किया जाता है?
चलिए दृश्य नियंत्रक को कॉल करें जो दूसरे नेविगेशन नियंत्रक VC_a की मोडल प्रस्तुति करता है। यह एक सामान्य रूप से प्रस्तुत नेविगेशन नियंत्रक है जिसका शीर्ष वीसी वीसी_बी है। VC_a सामान्य रूप से स्वयं को खारिज करते समय VC_a को इसके नेविगेशन रूट पर पॉप करने के बारे में कैसे पता चलेगा?
अच्छा जवाब (आमतौर पर) यह है कि वीसी_बी ने खुद को किसी कारण से खारिज करने का फैसला किया - आपके ऐप/मॉडल में कुछ शर्त इसे करने का फैसला करने के लिए बदल गई।
हम चाहते हैं कि वीसी_ए भी इस स्थिति का पता लगाए। जब VC_b को खारिज कर दिया जाता है, और क्योंकि इसके बारे में पर्दाफाश किया जा करने के लिए है VC_a एक viewWillAppear संदेश हो जाता है:
// VC_a.m
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (/* some app condition that's true when VC_b is done */) {
// I must be appearing because VC_b is done, and I'm being uncovered
// That means I'm done, too. So pop...
[self.navigationController popToRootViewControllerAnimated:NO];
} else {
// I must be appearing for the normal reason, because I was just pushed onto the stack
}
}
कौन सी नेविगेशन नियंत्रक आप कॉल कर रहे हैं? यह नेविगेशन नियंत्रक की जड़ पर चलेगा जिसे मैं कल्पना करता हूं। –
पहले दृश्य नियंत्रक को अपने नेविगेशन के रूटव्यू कंट्रोलर के रूप में बनाएं नियंत्रक –
मोडल व्यू कंट्रोलर बंद करें, फिर रूट पर पॉप करें। – Till