2015-03-05 8 views
27

मैं लॉगिन स्क्रीन लागू करने की कोशिश कर रहा हूं, जब लॉगिन क्लिक किया जाता है तो यह segue "login" करता है।स्विफ्ट तैयार करें ForSegue

मैंने लॉगिन तैयार करने के लिए इसे तैयार करने के लिए एक readyForSegue() ओवरराइड जोड़ा है, लेकिन विफल होने पर मुझे segue को रद्द करने के लिए कोई विधि नहीं दिखाई दे रही है।

ऐसा करने का सबसे अच्छा तरीका क्या है?

+1

यह एक खराब दृष्टिकोण की तरह लगता है। लॉग इन विफल होने पर आपको segue को कॉल करने के बजाय, लॉग इन सफल होने पर, केवल अपना सीगू करना चाहिए और इसे रद्द करने का प्रयास करें। – Ian

उत्तर

58

आप shouldPerformSegueWithIdentifier ओवरराइड करना चाहिए और झूठे वापसी करता है, तो लॉगिन विफल:

override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool { 
    if let ident = identifier { 
     if ident == "YourIdentifier" { 
      if loginSuccess != true { 
        return false 
      } 
     } 
    } 
    return true 
} 

स्विफ्ट 3 स्विफ्ट के लिए अपडेट किए 3 विधि अब कहा जाता है shouldPerformSegue

override func shouldPerformSegue(withIdentifier identifier: String?, sender: Any?) -> Bool { 
    if let ident = identifier { 
     if ident == "YourIdentifier" { 
      if loginSuccess != true { 
       return false 
      } 
     } 
    } 
    return true 
} 

// विस्तारित

यदि आप प्रोग्राम के रूप में performSegueWithIdentifier फोन इस विधि कहा जाता है नहीं किया जाएगा, लेकिन यह है कि के लिए की जरूरत नहीं है, तो आप यह सिर्फ अपना लॉगिन सफलता कॉल कर सकते हैं, अन्यथा यह उपेक्षा:

if loginSuccess { 
    performSegueWithIdentifier("login", sender: nil) 
} 
+0

'performSegueWithIdentifier' का उपयोग करने में एक समस्या यह है कि आपको गंतव्य दृश्य नियंत्रक तक पहुंच नहीं मिलती है और इसलिए डेटा पास नहीं हो सकता है? –

+1

@ सिमोनबेंग्ससन नहीं, लेकिन ऐसा करने के लिए आप 'तैयार (segue: UIStoryboardSegue, प्रेषक: कोई भी?)' ओवरराइड कर सकते हैं। – Skoua

10

आप एक निर्धारित से नहीं, एक दृश्य नियंत्रक से एक segue कर सकता है बटन। आप इसे स्टोरीबोर्ड पर वीसी के शीर्ष पर पीले बटन से ctrl-dragging द्वारा करते हैं। Segue एक पहचानकर्ता देने के लिए याद रखें!

फिर आप लॉगिन बटन से आईबीएक्शन फ़ंक्शन बना सकते हैं और प्रदर्शन करेंगेगुइथइडिएंटियर करें। तो

@IBAction func loginButtonTapped(sender: UIButton) { 
    if loginSuccess { 
     performSegue(withIdentifier: "login", sender: nil) 
    } 
} 

, में तैयार (:), आप segue के लिए अतिरिक्त सेटअप कर सकता है, के रूप में यह पहले वास्तविक segue जगह लेता है बुलाया जाएगा: यह कुछ इस तरह देखना चाहिए।

+1

यह उत्तर स्वीकार किया जाना चाहिए! –

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