स्टोरीबोर्ड का उपयोग करना

प्रविष्टि


हाल ही में जारी आईओएस 5 ने प्रोग्राम इंटरफ़ेस - स्टोरीबोर्ड विकसित करने के लिए एक सुविधाजनक तंत्र पेश किया। यह तंत्र आपको स्क्रीन, पॉपओवर डिस्प्ले, और यहां तक ​​कि तालिका में कोशिकाओं की स्थापना के बीच संक्रमण से जुड़े कोड की मात्रा को कम करने की अनुमति देता है।

कार्य: बटन पर क्लिक करके, अगली स्क्रीन को वर्तमान नेवीगेशन कंट्रोलर में रखकर दिखाएँ।
स्टोरीबोर्ड के बिना समाधान:

DDetailViewController* nextController = [DDetailViewController new]; [self.navigationController pushViewController:nextController animated:YES]; [nextController release]; 

स्टोरीबोर्ड का उपयोग करके समाधान:


वह सब है! कोई कोड नहीं!

यह कैसे काम करता है


एक .storyboard फ़ाइल परियोजना में बनाई गई है और पूरे इंटरफ़ेस को इससे लोड किया गया है। इस फ़ाइल के अंदर दृश्य का वर्णन किया गया है।


यह तीर पहले स्क्रीन को इंगित करता है जो प्रोग्राम चालू करने पर दिखाई देगा। इसे स्वचालित रूप से जोड़ा जाता है, स्टोरीबोर्ड में बहुत पहले नियंत्रक को जोड़ने के बाद, भविष्य में आप इसे किसी अन्य नियंत्रक पर खींच सकते हैं, जिससे यह पहला हो जाएगा।


यह तीर नियंत्रकों के बीच संबंध का वर्णन करता है, इस स्थिति में rootViewController NavigationController FirstViewController से मेल खाती है। यह कनेक्शन उसी तरह से सेट किया जा सकता है जब आउटलेट्स और एक्शन के कनेक्शन सेट होते हैं (उदाहरण के लिए, आप Ctrl दबाए एक कंट्रोलर से दूसरे में एक लाइन ड्रा कर सकते हैं)।


यह तीर किसी अन्य नियंत्रक को संक्रमण का संकेत देता है। इस तरह के एक संक्रमण को आसानी से उसी तरह से स्थापित किया जा सकता है जैसे पिछले मामलों में, संचार की शुरुआत वांछित इंटरफ़ेस तत्व से ठीक दूर जा सकती है - बटन, टेबल सेल, आदि। उसकी सेटिंग है - पहचानकर्ता और संक्रमण का प्रकार।

पहली नज़र में, सब कुछ बहुत ही तुच्छ लगता है, लेकिन सवाल तुरंत उठता है, अगर एक नियंत्रक से दूसरे में स्थानांतरित होने पर आपको डेटा स्थानांतरित करने की आवश्यकता है तो क्या करें?

स्क्रीन पर कब्जा


नियंत्रकों के बीच प्रत्येक संक्रमण को UIStoryboardSegue वर्ग द्वारा वर्णित किया गया है, इसके इंटरफ़ेस में केवल तीन गुण हैं: पहचानकर्ता , sourceViewController , डेस्टीव्यूकंट्रोलर । यह वह वर्ग है जो विधि में हमारे पास जाएगा
 - (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender 

इस विधि को उस नियंत्रक पर बुलाया जाएगा, जिससे संक्रमण शुरू किया गया था, हमारे मामले में यह FirstViewController होगा। हम इसे इस प्रकार परिभाषित करते हैं:
 - (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"showDetail"]) { [[segue destinationViewController] setText:@"SecondViewController"]; } else { [super prepareForSegue:segue sender:sender]; } } 

पहचानकर्ता मान संक्रमण सेटिंग में सेट किया गया था।

IPad पर स्टोरीबोर्ड


एक iPhone में, एक बार में केवल एक दृश्य किया जा सकता है, फिर iPad पर पॉपओवर के रूप में अपवाद हैं। पॉपओवर प्रदर्शित करने के लिए, UIStoryboardPopoverSegue वर्ग, UIStoryboardSegue का वंशज उपयोग किया जाता है । इस वर्ग में, एक गुण जोड़ा जाता है - popoverController , जो हमेशा एक पॉपओवर देता है जिसमें वर्तमान दृश्य प्रदर्शित होता है।

कोड मिक्स


स्टोरीबोर्ड पर सभी संक्रमणों का वर्णन नहीं किया जा सकता है। इस मामले में, आप स्टोरीबोर्ड को नियंत्रकों के बीच प्रदर्शित करने और स्विच करने के पुराने, परिचित तरीकों से मिला सकते हैं। कुछ मामूली सरलीकरण भी हैं:


अच्छी छोटी सी बात


जैसा कि लेख की शुरुआत में वादा किया गया था, अब स्टोरीबोर्ड में सीधे UITableViewCell को अनुकूलित करना संभव है! आप दोनों तैयार सेल प्रकारों से चुन सकते हैं और पूरी तरह से अपना खुद का बना सकते हैं!

मुझे इस तरह के इंटरफ़ेस की प्रयोज्यता पर संदेह है, लेकिन इससे पहले कि मुझे अधिक समय लगता। यदि आप नियंत्रक में UITableViewDataSource विधियों को परिभाषित नहीं करते हैं, तो कोड में लेबल बिल्कुल समान दिखाई देगा। यदि हमें तालिका को गतिशील रूप से भरने की आवश्यकता है, तो हम पुराने कोड का उपयोग करते हैं, सिवाय इसके कि तालिका विधि
 - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier 
अब हमेशा एक सेल देता है। यदि कतार में ऐसी कोई सेल नहीं है, तो इसे बनाया जाएगा।

किसी प्रोजेक्ट में स्टोरीबोर्ड कैसे जोड़ें




निष्कर्ष


बेशक, स्टोरीबोर्ड को अपनी परियोजनाओं में एकीकृत करना शुरू करना बहुत जल्दी है, क्योंकि आपको पहले के संस्करणों के लिए समर्थन की आवश्यकता है, लेकिन तकनीक आकर्षक दिखती है। इसके अलावा, यदि पर्याप्त मानक संक्रमण प्रकार नहीं हैं, तो आप अपने वंशज UIStoryboardSegue को कुल में लिख सकते हैं।

Source: https://habr.com/ru/post/In131128/


All Articles