2015-09-18 12 views
7

मैंने अपने स्विफ्ट ऐप को एक्सकोड 7/स्विफ्ट 2.0 में अपग्रेड किया और अब अचानक मेरे ऐप में कुछ सीग्स काम नहीं कर रहे हैं।एक्सकोड 7 - कुछ सीग्स अब काम नहीं कर रहे हैं

मेरे पास एक "चेक इन" मोडल पॉप अप करने वाला एक सीगू है और यह पूरी तरह से काम करता है, लेकिन फिर मेरे पास एक और सेग्यू एक "चेक आउट" मोडल पॉप अप करता है जो समान है और यह लॉन्च नहीं होता है और ऐप जमे हुए है।

मैंने स्क्रैच से सेग्यू को फिर से बनाया, पुष्टि की कि यह "चेक इन" के समान है, और यह अभी भी काम नहीं करता है।

मैंने इसके बजाय, मेरे चेक आउट मोडल के बजाय रिक्त दृश्य लॉन्च करने का प्रयास किया और यह ठीक काम करता है।

कोई त्रुटि नहीं है, यह सिर्फ फ्रीज है, मैंने पुष्टि की है कि "readyForSegue" भाग सही ढंग से कहा जा रहा है लेकिन मेरे मोडल का "viewDidLoad" भाग नहीं लगाया जा रहा है।

एफवाईआई, मेरे पास ऑटो-लेआउट बंद है।

+3

इस प्रश्न को यहां देखें: http://stackoverflow.com/questions/32549020/app-frozen-by-uikit-after-upgrading-to-xcode-7/32549072#32549072 – Yaroslav

+0

बिल्कुल सही, यह वही है जो मैं ' मैं देख रहा हूँ धन्यवाद @ यरोस्लाव –

उत्तर

8

क्या आपके "चेक आउट" मोडल में UITextView है? यदि ऐसा होता है, तो Xcode 7/iOS9 में एक बग है जहां आप एक मॉड्यूल (या कोई रूट व्यू) लॉन्च नहीं कर सकते हैं जिसमें UITextView शामिल है यदि आपने स्टोरीबोर्ड में डिफ़ॉल्ट टेक्स्ट मान सेट किया है।

यह सुनिश्चित करने के लिए चारों ओर एक कार्य है कि स्टोरीबोर्ड में आपका UITextView या तो रिक्त है या डिफ़ॉल्ट Lorem Ipsem मान है और इसके बजाय, WordDoadLoad पर कोड में प्रोग्रामेटिक रूप से टेक्स्ट सेट करें।

उम्मीद है कि यह बग जल्द ही तय हो जाएगा।

+4

आप UITextView को छोड़ सकते हैं लेकिन टेक्स्ट को हटा सकते हैं और यह काम करता है। इसे देखें: http://stackoverflow.com/questions/32549020/app-frozen-by-uikit-after-upgrading-to-xcode-7/32549072#32549072 – Yaroslav

+0

@ यरोस्लाव, धन्यवाद, मैं अपना जवाब सही कर दूंगा। –

+0

पिछले 2 सप्ताह से इस मुद्दे को हल करने के लिए संघर्ष कर रहा था। मैंने स्विफ्ट 1.2 में ऐप पर काम करने के लिए, मेरे अन्य मैक को अपग्रेड नहीं किया, एक्सकोड 6 रखा। यह बग अभी भी क्यों तय नहीं है? – Sahil

1

मुझे संदेह है कि आप कहीं भी "चेक आउट" नियंत्रक कोड में अनंत लूप है। नियंत्रक प्रस्तुत करने के बाद डीबगर में एप को रोकने का प्रयास करें (जब यह जम जाता है) और स्टैकट्रैक जांचें। यदि यह मदद नहीं करता है, तो viewDidLoad और viewWillAppear में फ्रीज उत्पन्न करने के लिए कोड लाइन-दर-लाइन टिप्पणी करने का प्रयास करें।

+0

viewDidLoad कभी नहीं बुलाया जाता है। ऊपर UITextView चीज मेरी समस्या तय है। सलाह के लिये धन्यवाद। –

1

मैं इस समस्या थी, इस

dispatch_async(dispatch_get_main_queue(), {() -> Void in 
      let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Storyboard Id") 
      self.presentViewController(viewController, animated: true, completion: nil) 
     }) 

तुम बस अपने ध्यान में रखते हुए एक स्टोरीबोर्ड आईडी देने के लिए और सामान्य रूप से यह काम कर रहा है के साथ प्रयास करें।

1

मेरा ऐप आईओएस 8 में पूरी तरह से काम कर रहा था। उसके प्रवाह था:

कुलपति: देखें नियंत्रक, NVC: नेविगेशन देखें नियंत्रक, ईआर: NVC और कुलपति, पी एस के बीच एंबेडेड जड़ संबंध: Segue, पीजी पुश: प्रोग्रामेटिक प्रस्तुति

NVC1 --- (ईआर) - > वीसी 1 --- (पीएस) -> एनवीसी 2 --- (ईआर) -> वीसी 2 और इसी तरह।

समस्या यह थी कि वीसी 1- (पीएस) -> एनवीसी 2 सीग्यू काम नहीं करता था, कोई फ्रीज नहीं था। vc1.prepareForSegue() निष्पादित किया गया था, लेकिन वीसी 2 प्रस्तुत नहीं किया गया था। मैंने प्रयोग किया और पाया कि मेरे पास यहां उल्लिखित UITextView समस्या नहीं है। -> VC1 --- (पीजी) -> VC2

NVC1 --- (ईआर): निम्नलिखित ब्रेडक्रंब नीचे उल्लिखित करके, मैं इसे निम्नलिखित तरीके से कोशिश कर रहा है (अंत में कोड) के घंटे के बाद काम मिल गया

यहां दिए गए कदम हैं: जैसा कि Segue issue in iOS9 में बताया गया है, कई एनवीसी शैली से बाहर हैं (अचानक आपके ऑनलाइन ट्यूटोरियल में क्या अनुशंसा की जाती है और ऐप्स को तोड़ने के लिए ऐप्पल पर शर्म आती है!)। इसलिए मैंने एनवीसी 1 --- (ईआर) -> वीसी 1 - (पीएस) -> वीसी 2 संशोधित किया जबकि वीसी 2 अभी भी एनवीसी 2 में एम्बेडेड था। मुझे StackOverflow post on view not in hierarchy के समान त्रुटियां मिलीं।इसलिए मैंने प्रोग्रामिंग को संक्रमणपूर्वक शुरू किया और present vs. push ViewController issue से निपटने के बाद "tried to push modally on active view controller" संदेश और फिर ViewController lifecycle issues परिणामस्वरूप "Unbalanced calls to begin/end appearance transactions" संदेश, मुझे निम्न कोड काम कर रहा है। इस अनुभव के आधार पर, मुझे सच में लगता है कि ऐप्पल को एक्सकोड 7/आईओएस 9 अपडेट में अकेले काम करने की चीज़ छोड़नी चाहिए थी।

//*********** VC1.swift. A translation of working code 

    class VC1:UIViewController{ 
    private var viewController2:VC2? 
    private var showVC2: Bool = false 
    override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 
     if(showVC2) { 
      showVC2 = false 
      self.pushVC2() 
     } 
    }//viewWillAppear 


    private var info:String? // info from incoming user action. 
    @IBAction unwindToVC1FromUserAction(incomingSegue: UIStoryboardSegue?) { 
    // Do app-specific stuff to get info from incomingSegue and 
    // store in self.info variables. 
    let myboard: UIStoryBoard = self.storyboard!; 
    self.viewController2 = myboard.instantiateViewControllerWithIdentifier(
        "VC2 Storyboard ID") as! VC2 
    self.prepareVC2() // Pass info to VC2.info, stuff you would have done in prepareForSegue 
    showVC2= true 
    } //unwind 

    private func prepareVC2() { 
     self.viewController2.info = self.info // etc.. 
    } 

    private func pushVC2() { 
     self.navigationController!.pushViewController(viewController2!, animated:false) 
    } 
} //class 
0

मेरे पास यह था, लेकिन यह उपर्युक्त में से कोई नहीं था। मेरा सीगू कॉल एक ब्लॉक के अंदर हुआ। जब मैंने मुख्य थ्रेड पर कॉल को स्थानांतरित किया तो मैंने देखा कि मेरे पास नए व्यू कंट्रोलर में 'NSUnknownKeyException' त्रुटि थी। ब्लॉक के अंदर होने से त्रुटि को एक्सकोड में पंजीकरण करने से रोकना प्रतीत होता था, इसलिए ऐप बस बिना किसी त्रुटि के लटकने लगा।

एक बार जब हल हो गया तो मूल कोड ठीक काम करता था।

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