2012-03-07 12 views
9

खारिज करने के लिए, मैं पहली बार के ontop एक दूसरे दृश्य प्रस्तुत करना चाहते हैं, तो खारिज पहले:कैसे एक दूसरे ViewController पेश और माता पिता ViewController में निम्नलिखित कोड का उपयोग कर पहली

// Animates the next questionViewController using the first questionViewController 
[previousView presentViewController:nextQuestionViewController animated:YES completion:nil]; 

// Dismiss the first questionViewController 
[previousView dismissViewControllerAnimated:NO completion:nil]; 

जब रन दूसरा दृश्य प्रस्तुत किया गया है, लेकिन पहला दृश्य खारिज नहीं होगा।

+0

पर मेरा उत्तर देख previousView एक नेविगेशन नियंत्रक ढेर पर एक ViewController है या यह रीति से प्रदर्शित किया गया था? –

+0

हां, यह सामान्य रूप से प्रदर्शित होता है। मैं यह नहीं समझ सकता कि यह क्यों खारिज नहीं करेगा। –

+0

आपके कोड से, यह केवल वर्तमान दृश्य कंट्रोलर कहता है: एनिमेटेड, मौजूद नहीं हैडलव्यू कंट्रोलर: एनिमेटेड –

उत्तर

12

आपको पहले "previousView" & को बर्खास्त करने की आवश्यकता होगी तो पेश "nextQuestionViewController":

// Dismiss the first questionViewController 
[previousView dismissViewControllerAnimated:NO completion:nil]; 

// Animates the next questionViewController using the first questionViewController 
[previousView presentViewController:nextQuestionViewController animated:YES completion:nil]; 
+1

निम्न अपवाद में इस उत्तर परिणामों के बाद: न आया हुआ अपवाद 'NSInvalidArgumentException', कारण की वजह से 'समाप्त एप्लिकेशन: 'आवेदन रीति से एक सक्रिय नियंत्रक पेश करने की कोशिश की। '' – Benjamin

+0

क्या आपको नहीं लगता यह त्रुटि हो जाएगा दृश्य नियंत्रक का उपयोग करने के लिए प्रवण होने के लिए एक और को यह जानने के लिए प्रवण होता है कि यह किसी समय पर स्वयं को हटा दिया जा रहा है। मैं @M [[UIAplplication sharedAplication] .keyWindow.rootViewController' का उपयोग करता हूं या वर्तमान में 'nextQuestionViewController' के समान, जैसा कि @Mozilla द्वारा सुझाया गया है। – atulkhatri

4

कोशिश

[self dismissViewControllerAnimated:NO completion:nil]; 

कि नाकाम रहने:

[self.navigationController popViewControllerAnimated:YES]; 
+0

मैं इस समस्या को फिर से हल करने का प्रयास कर रहा हूं - उन दोनों विधियों का उपयोग करके दूसरा दृश्य कंट्रोलर को खारिज करने में विफल रहता है, पहले प्रस्तुत करने के बाद - क्या मुझे कुछ और याद आ रहा है? –

+0

राफेल कहते हैं, आपको निम्न दृश्य नियंत्रक को निम्नानुसार प्रस्तुत करना चाहिए: [पिछला दृश्य वर्तमान मॉड्यूल दृश्य नियंत्रक: अगला क्वेस्टियन व्यू कंट्रोलर एनिमेटेड: हाँ]; – ader

2

मैं अगले किया (स्वयं - आपका पुराना नियंत्रक है):

UIStoryboard *storyboard = self.storyboard; 

[self dismissViewControllerAnimated:YES 
         completion:^{ 
     UIViewController *newController = [storyboard instantiateViewControllerWithIdentifier:@"newControllerStoryboardId"]; 
     newController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 

     [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:newController animated:YES completion:nil]; 
    }]; 
-1

ऐसा लगता है कि बी से सी में जाने के लिए संभव नहीं है, जो संक्षेप में दिखाया जा सकता है, जो गैर-व्यावसायिक दिखता है। हालांकि, अगर आप एक के शीर्ष पर एक काले रंग की subview रख सकते हैं जब तक आप कोड के लिए सी

एनिमेटेड किया है, https://stackoverflow.com/a/45579371/218226