आप मोडल सेग्स का सही उपयोग नहीं कर रहे हैं। जिस तरह से आपने इसे कार्यान्वित किया है, आप प्रत्येक दृश्य नियंत्रक का एक नया उदाहरण बना रहे हैं जब आप उस उदाहरण पर लौटने की बजाय सीगू करते हैं। यही कारण है कि आपकी स्मृति उपयोग में वृद्धि जारी है।
1) दृश्य नियंत्रक 2 में 1
2 दृश्य नियंत्रक) में viewController2Done
के रूप में एक विधि इस तरह परिभाषित करते हैं, एक संपत्ति प्रकार id
की delegate
बनाएं जिसका नाम:
IOS 6 से पहले, इस संभाल करने के लिए सही तरीका करने के लिए था ।
3) दृश्य नियंत्रक 1 के लिए prepareToSegue
में, दृश्य नियंत्रक 2, जब यह दृश्य नियंत्रक 1 पर लौटने के लिए समय आ गया है में) 2 self
-
4 दृश्य नियंत्रक में delegate
निर्धारित करते हैं, फोन [delegate viewController2Done]
5) viewController2Done
में कॉल [self dismissModalViewControllerAnimated:YES]
यह विधि अभी भी आईओएस 6 में काम करती है, लेकिन इसके बजाय एक नया unwind segue
भी उपयोग किया जा सकता है। इसका इस्तेमाल करने के लिए, तुम इतनी तरह आपके विचार नियंत्रक 1 में एक विधि निर्धारित करना होगा:
ऑब्जेक्टिव-सी:
- (IBAction)unwindFromViewController2:(UIStoryboardSegue *)segue
{
NSLog(@"and we are back");
}
स्विफ्ट:
@IBAction func unwindFromViewController2(segue: UIStoryboardSegue) {
print("and we are back")
}
तो फिर तुम नियंत्रण चाहते स्टोरीबोर्ड में दृश्य नियंत्रक के ऊपर बार में नारंगी निकास आइकन पर दृश्य नियंत्रक 2 में बटन से खींचें। पॉप अप में, आप unwindFromViewController2
और वॉयला का चयन करेंगे, आप कर चुके हैं।
OMG, मैं मूर्ख हूँ। धन्यवाद! – Piotr