/ / उद्देश्य सी - आईओएस, उद्देश्य-सी, व्यू कंट्रोलर में एक संवाद विंडो कैसे बंद करें

उद्देश्य सी - आईओएस, उद्देश्य-सी, व्यू कंट्रोलर में एक संवाद विंडो को कैसे बंद करें

मेरे पास व्यू कंट्रोलर ए है और बटन के क्लिक पर, iप्रपत्र शैली के रूप में प्रपत्र शैली के साथ एक और दृश्य नियंत्रक खोला है। खोले गए दूसरे दृश्य नियंत्रक में दो बटन हैं। अब, जब इन बटनों पर क्लिक किया जाता है, तो यह दूसरा दृश्य नियंत्रक दूर जाना चाहिए और अगला दृश्य नियंत्रक दृश्य नियंत्रक ए के शीर्ष पर खुल जाना चाहिए। लेकिन जब मैं नीचे कोशिश कर रहा हूं, तो एक और दृश्य नियंत्रक संवाद के अंदर खुल रहे हैं मैं नहीं जानता कि इस सेग्यू को कैसे खोलें और एक और दृश्य को एक साथ कॉल करें।

उत्तर:

जवाब के लिए 0 № 1

नित्य, क्या आपने वर्तमान दृश्य नियंत्रक को खारिज करने के लिए कोड के निम्नलिखित भाग को आजमाया है। इसे उस बटन के आईबीएक्शन में उपयोग करें जहां आप व्यू कंट्रोलर को खारिज करना चाहते हैं: -

self.dismissViewControllerAnimated(true, completion: nil)

जवाब के लिए 0 № 2

तो आपके पास एक बटन के साथ रूट व्यू कंट्रोलर ए है। यदि आप उस बटन को टैप करते हैं, तो एक अन्य व्यू कंट्रोलर (चलो इसे नाम दें बी) को फॉर्म शीट के रूप में प्रस्तुत किया जाता है। बी में दो बटन होते हैं और यदि आप उन बटनों में से किसी एक को टैप करते हैं, तो बी को खारिज कर दिया जाना चाहिए और बाद एक अलग व्यू कंट्रोलर (चलो कहें सी) को ए द्वारा प्रस्तुत किया जाना चाहिए

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

1। यदि आप स्टोरीबोर्ड का उपयोग कर रहे हैं और बी पर बटन ए को अवांछित सेग्यू ट्रिगर करता है तो आप इसे अनइंड सेक एक्शन के अंत में जोड़ सकते हैं:

dispatch_async(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"segueThatPresentsC" sender:nil];
});

2। यदि आप अपने व्यू कंट्रोलर प्रोग्रामेटिक रूप से प्रस्तुत करते हैं तो: ए से बी पेश करने से पहले आप बी के एक बटन को कॉन्फ़िगर कर सकते हैं ताकि आईएसटी लक्ष्य ए है और इसकी क्रिया ए में परिभाषित एक विधि है:

- (void) dismissAndPresentC {
[self dismissViewControllerAnimated:YES completion:^{
[self presentViewController:instanceOfC animated:YES completion:nil];
}];
}

यह दूसरा शायद थोड़ा छोटा हैक है, लेकिन फिर भी एक भ्रमित अवधारणा है।