2012-04-25 13 views
11

मैं एक स्टूडियो सीगू ट्रिगर करने की कोशिश कर रहा हूं जैसे ही व्यूडिड को व्यू कंट्रोलर पर कॉल किया जाता है। सीगू में एक पहचानकर्ता संलग्न होता है, और बटन या अन्य नियंत्रण से जुड़ी एक विधि के अंदर से बुलाया जाता है जब ठीक काम करता है। लेकिन यह viewDidLoad के अंदर काम नहीं करता है। यह बस चुपचाप विफल रहता है। क्या डिडलोड में सेग्यू को नजरअंदाज करने के बारे में कुछ नियम है?क्यों नहीं करता है SegueWithIdentifier viewDidLoad के अंदर काम करता है?

मैं कोशिश की है दोनों इस:

[self performSegueWithIdentifier: @"mySegue" 
          sender: self]; 

और इस:

[self dismissViewControllerAnimated:YES completion:^() { 
[self performSegueWithIdentifier:@"mySegue" sender:self]; 
}]; 

न तो काम करते हैं।

+0

आप एक और दृश्य क्यों लोड करना चाहते हैं जब कोई दूसरा दिखने वाला है? क्या आपने इसे "viewWillAppear" में जोड़ने की कोशिश की है (हालांकि मैं समझ नहीं पा रहा हूं कि आप ऐसा क्यों चाहते हैं)। – Pochi

उत्तर

19

आप अभी तक प्रस्तुत नहीं किए गए दृश्य नियंत्रक को बर्खास्त नहीं कर सकते हैं। didLoad में पूरी तरह मेमोरी प्रबंधन फ़ंक्शन हैं, आप इसका उपयोग (ए) कन्स्ट्रक्टर के रूप में कर सकते हैं। क्या काम कर सकता है, viewDidAppear में एक सेग्यू शुरू करना है, हालांकि मैं पहली बार उस दृश्य से शुरू करने का सुझाव दूंगा जो आप पहली बार चाहते हैं।

1

सबसे संभावित कारण यह हो सकता है कि ओएस दूसरी स्क्रीन संक्रमण कॉल को अनदेखा करता है जबकि कोई प्रगति पर है। आपके व्यूडिडलोड में, व्यू संक्रमण (वर्तमान दृश्य का) अभी भी पूरा नहीं हुआ है। आप इसे पूरा करने से पहले एक और संक्रमण पूछ रहे हैं और ओएस इसे अनदेखा करता है। यह एक कारण है कि जब एक अलग समारोह से बुलाया जाता है तो segue काम करता है। ViewDidAppear (या एक समय देरी के बाद) को कॉल करने का प्रयास करें

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