7

में नेविगेशन नियंत्रक के बिना दृश्य में डिगलोड() को देखें, मेरे पास तीन विचार हैं (देखें 1 सर्वर कनेक्शन जांचता है, देखें 2 मुख्य सामग्री दिखाता है, व्यू 3 समर्थन पृष्ठ दिखाता है) और मैंने कोडिंग के बिना स्टोरीबोर्ड में उन्हें बनाया। मेरा आईओएस ऐप शुरू करने पर व्यू 1 सर्वर कनेक्शन की जांच करते समय स्पिनर दिखाता है। यदि कनेक्शन चेक पास हो गया है तो मैं 2 देखने के लिए जाना चाहता हूं और यदि यह असफल रहा है तो मैं 3 देखने के लिए जाना चाहता हूं। दृश्य 1 केवल कनेक्शन जांच के लिए है और मैं इस दृश्य पर वापस नहीं जाना चाहता हूं। तो, मुझे लगता है कि मुझे नेविगेशन नियंत्रक की आवश्यकता नहीं है, या?स्विफ्ट

स्टोरीबोर्ड में मैंने सभी दृश्यों को सेक के साथ जोड़ा।

override func viewDidLoad() { 
    super.viewDidLoad() 

    let result:Bool = server.isServerAvailable(myURL) 

    if (result == true) { 
     performSegueWithIdentifier("ConnectionCheckToMain", sender: self) 
    } 
    else { 
     performSegueWithIdentifier("ConnectionCheckToSupport", sender: self) 
    } 
} 

लेकिन viewDidLoad() समारोह में इस segue काम नहीं करता है, लेकिन मैं पता नहीं क्यों: दृश्य 1 मेरे विचार नियंत्रक में मैं यह करते हैं। मैंने इसे देखने के लिए एक बटन जोड़ा है। मैंने उसी कोड को viewDidLoad() में लागू किया है और यह ठीक काम करता है। बटन पर क्लिक करने पर अगला दृश्य लोड होता है।

क्या कोई विचार है कि कोड काम नहीं करता है?

उत्तर

3

आप नेविगेशन के लिए इस कोड का उपयोग कर सकते हैं।

let vc : UIViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ConnectionCheckToMain") as! UIViewController; 
    self.presentViewController(vc, animated: true, completion: nil) 
+0

Thx, लेकिन अब मैं निम्न संदेश मिलता है: ** चेतावनी: प्रयास पेश करने के लिए पर! जिसका दृश्य खिड़की पदानुक्रम में नहीं है ** मेरी गलती कहां है? – Martin

+3

मैंने समस्या हल की, मैंने कोड को देखने के लिए कोड माइग्रेट किया()। – Martin

+0

मैंने इस समाधान की कोशिश की लेकिन मुझे एक त्रुटि मिली ** AnyObject 'UIViewController' में परिवर्तनीय नहीं है, क्या आप 'as!' का उपयोग करना चाहते थे डाउनकास्ट को मजबूर करने के लिए? ** क्यों? –

1

मैं एक ही समस्या थी और मैं इस कोड के साथ इसे हल:

dispatch_async(dispatch_get_main_queue(), {() -> Void in 
      let viewController:UIViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ViewControllerClassId") as! ViewControllerClassName 
      self.presentViewController(viewController, animated: true, completion: nil) 
     }) 
5

इस कोड "segue" का उपयोग कर मुझे (स्विफ्ट 3) के लिए हल (बदले "ConnectionCheckToMain" अपने segue नाम के साथ ।

DispatchQueue.main.async(execute: { 
    self.performSegue(withIdentifier: "ConnectionCheckToMain", sender: nil) 
    })