2012-01-24 9 views
12

एक एक्सएमएल वापसी के आधार पर, मैं UIButton छूने पर प्रदर्शन करने के लिए वर्तमान segue नहीं चाहते।ios segue "अभी नहीं"

मैं जानता हूँ कि मैं चुन सकते हैं जो segue मैं चाहता हूँ करने के लिए करते हैं, लेकिन मैं एक segueनहीं प्रदर्शन कैसे बनाने के लिए? या कम से कम उपलब्ध segues के किसी भी प्रदर्शन नहीं?

उत्तर

25

अपने तैनाती लक्ष्य iOS 6.0 है या बाद में, आप the -[UIViewController shouldPerformSegueWithIdentifier:sender:] method ओवरराइड YES वापस जाने के लिए कर सकते हैं यदि आप यदि आप नहीं segue और NO प्रदर्शन करने के लिए चाहते हैं।

यदि आपका तैनाती लक्ष्य आईओएस 6.0 से पहले है, तो आप shouldPerformSegueWithIdentifier:sender: संदेश प्राप्त नहीं होगा। तो अपने स्टोरीबोर्ड में, बटन से सेगू न खींचे। इसके बजाए, बटन के व्यू कंट्रोलर से सेग्यू खींचें और सीगू को पहचानकर्ता दें। बटन को अपने व्यू कंट्रोलर में IBAction पर कनेक्ट करें। कार्रवाई में, जांचें कि क्या आप segue करना चाहते हैं। आप इसे प्रदर्शन करने के लिए चाहते हैं, तो अपने आप को performSegueWithIdentifier:sender: भेजने के लिए, पहचानकर्ता आप स्टोरीबोर्ड में segue करने के लिए सौंपा गुजर।

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender 

उदाहरण के लिए::

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { 
    if ([identifier isEqualToString:@"listPopover"]) { 
     if (self.listPopover == nil) { 
      // Allow the popover segue 
      return YES; 
     } 
     // Cancel the popover segue 
     return NO; 
    } 
    // Allow all other segues 
    return YES; 
} 
+0

में यह जाँच 'है [स्वयं प्रदर्शन SegueWithIdentifier: @ "myIdentifier" प्रेषक: स्वयं]; 'सही? Xcode के मुझे एक 'SIGABRT' :( – Jacksonkr

+0

आप को देखने के लिए क्या गलत हो रहा एक अपवाद ब्रेकप्वाइंट निर्धारित करने की आवश्यकता देने –

3

Apple Developer Documentation एक segue कि स्टोरीबोर्ड के भीतर किया जाता है रद्द करने के लिए सही विधि है func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath)

+0

' shouldPerformSegueWithIdentifier:। इस: 'संदेश IOS 6 में जोड़ा गया था और आईओएस के पिछले संस्करण चलाने वाले उपकरणों पर नहीं भेजा जाएगा जब यह प्रश्न पोस्ट किया गया था, आईओएस 6 जारी नहीं किया गया था। –