2014-05-12 7 views
5

कोई प्रोग्रामिंग presentViewController बनाम UIStoryboardSegue modal के उपयोग के बीच अंतर को समझा सकता है?UIStoryboardSegue बनाम presentviewcontroller?

UIStoryboardSegue का उपयोग केवल सुविधा के लिए है? या कुछ प्रदर्शन लाभ है?

धन्यवाद

उत्तर

13

प्रदर्शन बुद्धिमान वहाँ कोई वास्तविक अंतर है।

मुख्य अंतर यह है कि नया दृश्य नियंत्रक बनाया गया है।

स्टोरीबोर्ड सेग्यू के साथ वस्तु प्रस्तुत होने से पहले स्टोरीबोर्ड से अनारक्षित हो जाती है।

कोड में आप की तरह नया दृश्य नियंत्रक बनाना होगा ...

ModalViewController *modal = [[ModalViewController alloc] init]; 

इससे पहले कि आप को पेश ...

[self presentViewController:modal animated:YES completion:nil]; 

उन दोनों आप विभिन्न में गुण इंजेक्षन करने की अनुमति तरीके भी

कोड का उपयोग करके आप ऊपर निम्नलिखित जोड़ना होगा ...

// depends on property type etc... 
modal.someProperty = @"someValue"; 

एक segue आप इस करना होगा का उपयोग करते समय ...

- (void)prepareForSegue:(UIStoryBoardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"modalSegue"]) { 
     // the view controller is already created by the segue. 
     // just grab it here first 
     ModalViewController *controller = segue.destinationViewController; 

     controller.someProperty = @"someValue"; 
    } 
} 

वहाँ एक अंतर है?

वास्तव में, केवल व्यक्तिगत वरीयता और कुछ दृष्टिकोण कुछ डिजाइन पैटर्न और उपयोगों के लिए खुद को अधिक आसानी से उधार देते हैं। जितना अधिक आप उपयोग करेंगे उतना ही आप सीखेंगे कि आप किस दृष्टिकोण को पसंद करते हैं।

+0

धन्यवाद। मैं कुछ मामलों में UIStoryboardSegue का उपयोग करना पसंद करता हूं क्योंकि मैं और अधिक व्यवस्थित देख सकता हूं। तो, अगर मैं UIStoryboardSegue का उपयोग करता हूं ... क्या Uwindsegue बनाम dismissViewController के उपयोग के बीच कुछ अंतर है? –

+0

सेगमेंट को खोलना अच्छा है क्योंकि वे आपको दृश्य को कैसे खारिज करते हैं इस पर निर्भर करते हुए कोड चलाने की अनुमति देते हैं। यानी आप "रद्द" और "सहेजने" को खोल सकते हैं। इस तरह आप यह निर्धारित कर सकते हैं कि आपको स्क्रीन को फिर से लोड करने की आवश्यकता है या नहीं (आदि ...) – Fogmeister

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