स्टोरीबोर्ड का उपयोग कब करें और XIBs का उपयोग कब करें


196

क्या आईओएस प्रोजेक्ट में स्टोरीबोर्ड का उपयोग करना और XIBs का उपयोग कब करना है, इस पर कोई दिशानिर्देश हैं? प्रत्येक के पक्ष और विपक्ष क्या हैं और वे प्रत्येक परिस्थितियों में क्या करते हैं?

जैसा कि मैं बता सकता हूं कि स्टोरीबोर्ड सेगमेंट का उपयोग करने के लिए यह साफ नहीं है जब आपके पास डायनेमिक यूआई तत्वों (जैसे मैप पिन) द्वारा धक्का दिए जाने वाले दृश्य नियंत्रक होते हैं।


4
यदि आप चाहते हैं कि आपका ऐप iOS4 को भी चालू कर दे, तो आपके पास कोई विकल्प नहीं है: आप उस स्थिति में स्टोरीबोर्ड का उपयोग नहीं कर सकते हैं
AmineG

तो "SO पर अविश्वसनीय रूप से बाहर" क्यूए का एक बढ़िया उदाहरण !!
फेटी

जवाबों:


174

मैंने XIBs का बड़े पैमाने पर उपयोग किया है और स्टोरीबोर्ड का उपयोग करके दो परियोजनाओं को पूरा किया है। मेरी शिक्षाएँ हैं:

  • स्टोरीबोर्ड उन ऐप्स के लिए अच्छा है जो स्क्रीन के एक छोटे से मध्यम संख्या और विचारों के बीच अपेक्षाकृत सरल नेविगेशन हैं।
  • यदि आपके पास बहुत सारे दृश्य हैं और उनके बीच बहुत से क्रॉस-नेविगेशन हैं तो स्टोरीबोर्ड दृश्य भ्रमित हो जाता है और साफ रखने के लिए बहुत अधिक काम करता है।
  • कई डेवलपर्स के साथ एक बड़ी परियोजना के लिए मैं स्टोरीबोर्ड का उपयोग नहीं करेगा क्योंकि आपके पास अपने यूआई के लिए एक ही फाइल है और आसानी से समानांतर में काम नहीं कर सकता है।
  • यह बड़े ऐप के लिए कई स्टोरीबोर्ड फ़ाइलों में विभाजित करने के लिए लायक हो सकता है, लेकिन मैंने ऐसा करने की कोशिश नहीं की है। यह उत्तर पता चलता है कि स्टोरीबोर्ड के बीच कैसे बहस करनी है।
  • आपको अभी भी XIBs की आवश्यकता है: मेरे दोनों स्टोरीबोर्ड प्रोजेक्ट्स में मुझे कस्टम टेबल सेल्स के लिए XIBs का उपयोग करना था।

मुझे लगता है कि स्टोरीबोर्ड यूआई कार्यान्वयन के लिए सही दिशा में एक कदम है और आशा है कि एप्पल भविष्य में आईओएस संस्करणों में उनका विस्तार करेगा। उन्हें हालांकि "एकल फ़ाइल" समस्या को हल करने की आवश्यकता है, अन्यथा वे बड़ी परियोजनाओं के लिए आकर्षक नहीं होंगे।

यदि मैं एक छोटे आकार का ऐप शुरू करता हूं और iOS5 को केवल अनुकूलता दे सकता हूं, तो मैं स्टोरीबोर्ड का उपयोग करूंगा। अन्य सभी मामलों के लिए मैं XIBs से चिपकता हूं।


37
दो चीज़ें। 1) आप स्टोरीबोर्ड में कस्टम टेबल सेल बना सकते हैं (वे उन्हें प्रोटोटाइप सेल कहते हैं) और 2) आप कई स्टोरीबोर्ड फ़ाइलों का उपयोग कर सकते हैं। मेरा जवाब यहाँ देखें: stackoverflow.com/a/9610972/937822 विवरण के लिए कैसे।
lnafziger

10
धन्यवाद। मैंने आपके उत्तर की लिंक जोड़ दी। कस्टम कोशिकाओं के लिए के रूप में: प्रोटोटाइप कोशिकाओं ने मेरे लिए काम नहीं किया क्योंकि मुझे कई दृश्यों में कस्टम कोशिकाओं का पुन: उपयोग करने की आवश्यकता है। इसलिए मुझे XIBs में वापस आना पड़ा।
हेनिंग77

2
Xcode 5.x में स्टोरीबोर्ड्स को मर्ज करने में काफी सुधार किया गया है क्योंकि XML मार्कअप को बहुत सरल बनाया गया है।
स्कॉट अहटेन

मुझे लगता है कि यह सब प्रोजेक्ट आकृति विज्ञान (प्रोटोटाइप?, बड़े पैमाने पर प्रोजेक्ट ?, पहले से ही तैयार है ?, आदि ...) पर निर्भर करता है यहां मेरे विचार हैं polarios.co/2014/08/04/storyboard-xibs-co
Ganzolo

1
"अगर आपके पास बहुत सारे दृश्य हैं और उनके बीच बहुत से क्रॉस-नेविगेशन हैं तो स्टोरीबोर्ड दृश्य भ्रमित हो जाता है और साफ रखने के लिए बहुत अधिक काम करता है" मैं उस पर सहमत नहीं हूं, आपको इसे करने के लिए उचित प्रवाह का पता लगाने की आवश्यकता है, आप कर सकते हैं उचित डिज़ाइन के साथ अधिकांश सेगमेंट से बचें।
पाब्लो ए।

221

1/12/2016 अपडेट करें : यह 2016 है और मैं अभी भी अपने यूआई को कोड में रखना पसंद करता हूं और स्टोरीबोर्ड में नहीं। कहा जा रहा है, स्टोरीबोर्ड ने एक लंबा सफर तय किया है। मैंने इस पोस्ट से उन सभी बिंदुओं को हटा दिया है जो केवल 2016 में अब लागू नहीं होते हैं।

अपडेट 4/24/2015 : दिलचस्प बात यह है कि Apple ने हाल ही में खुले- खट्टे शोध में स्टोरीबोर्ड का उपयोग नहीं किया है क्योंकि पीटर स्टेनगर ने देखा है ("इंटरफ़ेस बिल्डर" के अधीन है)।

अद्यतन 6/10/2014 : जैसा कि अपेक्षित था, ऐप्पल स्टोरीबोर्ड और एक्सकोड में सुधार करता है। कुछ बिंदु जो आईओएस 7 और नीचे लागू होते हैं, वे अब आईओएस 8 पर लागू नहीं होते हैं (और अब इस तरह के रूप में चिह्नित हैं)। इसलिए जब स्टोरीबोर्ड में स्वाभाविक रूप से अभी भी खामियां हैं, तो मैं अपनी सलाह को संशोधित करता हूं कि वह चयन करने के लिए उपयोग न करें जहां यह समझ में आता है

अब भी है कि iOS 9 बाहर है, मैं सलाह दूंगा विरुद्धस्टोरीबोर्ड का उपयोग करने का निर्णय लेते समय सावधानी बरतने के लिए। यहाँ मेरे कारण हैं:

  • स्टोरीबोर्ड रनटाइम में विफल रहता है, संकलन समय पर नहीं : आपके पास एक सेगू नाम में टाइपो है या इसे आपके स्टोरीबोर्ड में गलत जोड़ा गया है? यह रनटाइम में उड़ जाएगा। आप एक कस्टम UIViewController उपवर्ग का उपयोग करते हैं जो आपके स्टोरीबोर्ड में अब मौजूद नहीं है? यह रनटाइम में उड़ जाएगा। यदि आप कोड में ऐसी चीजें करते हैं, तो आप उन्हें संकलन समय के दौरान जल्दी पकड़ लेंगे। अपडेट : मेरा नया टूल स्टोरीबोर्ड अधिकांशतः इस समस्या को हल करता है।

  • स्टोरीबोर्ड तेजी से भ्रामक हो जाते हैं : जैसे-जैसे आपकी परियोजना बढ़ती है, आपके स्टोरीबोर्ड को नेविगेट करने में अधिक मुश्किल होती जाती है। इसके अलावा, यदि एकाधिक दृश्य नियंत्रकों के पास कई अन्य दृश्य नियंत्रकों के लिए कई तर्क हैं, तो आपका स्टोरीबोर्ड जल्दी से स्पेगेटी के कटोरे की तरह दिखाई देने लगता है और आप अपने आप को ज़ूम इन और आउट ज़ूम कर सकते हैं और उस जगह पर स्क्रॉल कर सकते हैं, जिसे आप देख रहे हैं। के लिए और यह पता लगाने के लिए कि कौन से अंक कहाँ हैं। अपडेट : यह समस्या ज्यादातर आपके स्टोरीबोर्ड को कई स्टोरीबोर्ड में विभाजित करके हल की जा सकती है, जैसा कि पिल्की के इस लेख और रॉबर्ट ब्राउन के इस लेख में वर्णित है ।

  • स्टोरीबोर्ड एक टीम में काम करना कठिन बनाते हैं : क्योंकि आपके पास आमतौर पर आपके प्रोजेक्ट के लिए केवल एक विशाल स्टोरीबोर्ड फ़ाइल होती है, जिससे कई डेवलपर्स नियमित रूप से उस एक फाइल में बदलाव करते हैं, जो एक सिरदर्द हो सकता है: परिवर्तन को मर्ज करने की आवश्यकता होती है और टकराव का समाधान होता है। जब कोई विरोधाभास होता है, तो यह बताना कठिन होता है कि इसे कैसे हल किया जाए: Xcode स्टोरीबोर्ड XML फ़ाइल बनाता है और इसे वास्तव में इस लक्ष्य को ध्यान में रखते हुए डिज़ाइन नहीं किया गया था कि मानव को पढ़ना होगा, अकेले इसे संपादित करें।

  • स्टोरीबोर्ड्स कोड की समीक्षा को कठिन या लगभग असंभव बनाते हैं : आपकी टीम पर पीयर कोड की समीक्षा एक बहुत अच्छी बात है। हालाँकि, जब आप स्टोरीबोर्ड में बदलाव करते हैं, तो एक अलग डेवलपर के साथ इन परिवर्तनों की समीक्षा करना लगभग असंभव है। आप बस इतना कर सकते हैं कि एक बड़ी XML फ़ाइल का एक हिस्सा है। यह तय करना कि वास्तव में क्या बदल गया है और यदि वे परिवर्तन सही हैं या यदि उन्होंने कुछ तोड़ दिया है तो वास्तव में कठिन है।

  • स्टोरीबोर्ड्स का कोड पुन : उपयोग होता है : मेरी iOS परियोजनाओं में, मैं आमतौर पर एक ऐसा वर्ग बनाता हूं जिसमें सभी रंग और फोंट और मार्जिन और इनसेट होते हैं जो मैं इसे एक सुसंगत रूप देने और महसूस करने के लिए ऐप में उपयोग करता हूं: यदि मुझे करना है तो यह एक पंक्ति परिवर्तन है। पूरे ऐप के लिए उन मानों में से कोई भी समायोजित करें। यदि आप स्टोरीबोर्ड में ऐसे मान सेट करते हैं, तो आप उन्हें डुप्लिकेट करते हैं और जब आप उन्हें बदलना चाहते हैं तो हर एक घटना को खोजने की आवश्यकता होगी। संभावना अधिक है कि आप एक को याद करते हैं, क्योंकि स्टोरीबोर्ड में कोई खोज और प्रतिस्थापन नहीं है।

  • स्टोरीबोर्ड को लगातार संदर्भ स्विच की आवश्यकता होती है : मैं खुद को काम करते हुए पाता हूं और स्टोरीबोर्ड की तुलना में कोड में बहुत तेजी से नेविगेट करता हूं। जब आपका ऐप स्टोरीबोर्ड का उपयोग करता है, तो आप लगातार अपना संदर्भ बदलते हैं: "ओह, मुझे एक अलग व्यू कंट्रोलर लोड करने के लिए इस टेबल व्यू सेल पर एक टैप चाहिए। मुझे अब स्टोरीबोर्ड खोलना होगा, सही व्यू कंट्रोलर ढूंढना होगा, एक नया सेगमेंट बनाना होगा। अन्य दृश्य नियंत्रक (जिसे मुझे भी ढूंढना है), सेग को एक नाम दें, उस नाम को याद रखें (मैं स्टोरीबोर्ड में स्थिरांक या चर का उपयोग नहीं कर सकता), कोड पर वापस स्विच करें और मुझे आशा है कि मैं नाम का गलत अनुमान नहीं लगाऊंगा मेरी तैयारी विधि के लिए यह तर्क है। मैं चाहता हूं कि मैं कोड की उन 3 पंक्तियों को यहीं टाइप करूं जहां मैं हूं! " नहीं, यह मजेदार नहीं है। कोड और स्टोरीबोर्ड (और कीबोर्ड और माउस के बीच) के बीच स्विच करना पुराना तेज़ हो जाता है और आपको धीमा कर देता है।

  • स्टोरीबोर्ड रिफ्लैक्टर के लिए कठिन हैं : जब आप अपने कोड को रिफलेक्टर करते हैं, तो आपको यह सुनिश्चित करना होगा कि यह अभी भी मेल खाता है कि आपका स्टोरीबोर्ड क्या उम्मीद करता है। जब आप अपने स्टोरीबोर्ड में चीजों को घुमाते हैं, तो आप केवल रनटाइम पर पता लगाएंगे यदि यह अभी भी आपके कोड के साथ काम करता है। यह मुझे ऐसा लगता है जैसे मुझे दो दुनियाओं को सिंक में रखना है। यह भंगुर लगता है और मेरी विनम्र राय में परिवर्तन को हतोत्साहित करता है।

  • स्टोरीबोर्ड कम लचीले हैं : कोड में, आप मूल रूप से कुछ भी कर सकते हैं जो आप चाहते हैं! स्टोरीबोर्ड के साथ आप एक उपसमूह तक सीमित हैं जो आप कोड में कर सकते हैं। खासकर जब आप एनिमेशन और बदलाव के साथ कुछ उन्नत चीजें करना चाहते हैं, तो आप इसे काम करने के लिए खुद को "स्टोरीबोर्ड से लड़" पाएंगे।

  • स्टोरीबोर्ड आपको विशेष दृश्य नियंत्रकों के प्रकार को बदलने की अनुमति नहीं देते हैं : आप एक UITableViewControllerमें बदलना चाहते हैं UICollectionViewController? या एक मैदान में UIViewController? स्टोरीबोर्ड में संभव नहीं। आपको पुराने दृश्य नियंत्रक को हटाना होगा और एक नया बनाना होगा और सभी सेगमेंट को फिर से जोड़ना होगा। कोड में इस तरह का बदलाव करना बहुत आसान है।

  • स्टोरीबोर्ड आपकी परियोजना में दो अतिरिक्त देनदारियों को जोड़ता है : (1) स्टोरीबोर्ड संपादक उपकरण जो स्टोरीबोर्ड एक्सएमएल और (2) रनटाइम घटक को उत्पन्न करता है जो एक्सएमएल को पार्स करता है और इससे यूआई और नियंत्रक ऑब्जेक्ट बनाता है। दोनों भागों में बग हो सकते हैं जिन्हें आप ठीक नहीं कर सकते।

  • स्टोरीबोर्ड आपको एक सबव्यू जोड़ने की अनुमति नहीं देता हैUIImageView : कौन जानता है कि क्यों।

  • स्टोरीबोर्ड आपको व्यक्तिगत दृश्य (-कंट्रोलर) के लिए ऑटो लेआउट को सक्षम करने की अनुमति नहीं देता है : स्टोरीबोर्ड में ऑटो लेआउट विकल्प की जांच / अनचेक करके, स्टोरीबोर्ड में परिवर्तन को सभी नियंत्रकों पर लागू किया जाता है। (इस बिंदु के लिए सावा मज़ेरे को धन्यवाद!)

  • स्टोरीबोर्ड में पीछे की ओर संगतता को तोड़ने का एक उच्च जोखिम है : Xcode कभी-कभी स्टोरीबोर्ड फ़ाइल स्वरूप को बदल देता है और किसी भी तरह से गारंटी नहीं देता है कि आप स्टोरीबोर्ड फ़ाइलों को खोलने में सक्षम होंगे जो आप आज से कुछ साल या महीने बाद भी बनाते हैं। (इस बिंदु के लिए विचार-विमर्श के लिए धन्यवाद। मूल टिप्पणी देखें )

  • स्टोरीबोर्ड आपके कोड को और अधिक जटिल बना सकता है: जब आप कोड में अपना व्यू कंट्रोलर बनाते हैं, तो आप initउदाहरण के लिए कस्टम तरीके बना सकते हैं initWithCustomer:। इस तरह, आप customerअपने दृश्य नियंत्रक के अंदर को अपरिवर्तनीय बना सकते हैं और सुनिश्चित कर सकते हैं कि यह दृश्य नियंत्रक बिना किसी customerऑब्जेक्ट के नहीं बनाया जा सकता है । स्टोरीबोर्ड का उपयोग करते समय यह संभव नहीं है। आपको prepareForSegue:sender:कॉल की जाने वाली विधि का इंतजार करना होगा और फिर आपको customerअपने व्यू कंट्रोलर पर प्रॉपर्टी सेट करनी होगी , जिसका मतलब है कि आपको यह प्रॉपर्टी म्यूट करनी होगी और आपको व्यू कंट्रोलर को बिना customerऑब्जेक्ट के बनाने की अनुमति देनी होगी । मेरे अनुभव में यह आपके कोड को बहुत जटिल कर सकता है और आपके ऐप के प्रवाह के बारे में तर्क करना कठिन बनाता है। 9/9/16 अपडेट करें: क्रिस डज़ोम्बक ने लिखा थाइस समस्या के बारे में महान लेख

  • यह मैकडॉनल्ड्स है : इसे माइक्रोसॉफ्ट के बारे में स्टीव जॉब्स के शब्दों में कहें: यह मैकडॉनल्ड्स (वीडियो) है !

ये मेरे कारण हैं कि मुझे स्टोरीबोर्ड के साथ काम करना क्यों पसंद नहीं है। इनमें से कुछ कारण XIB पर भी लागू होते हैं। स्टोरीबोर्ड-आधारित परियोजनाओं पर जो मैंने काम किया है, उन्होंने मुझे जितना समय बचाया है, उससे कहीं अधिक समय खर्च किया है और उन्होंने चीजों को आसान बनाने के बजाय अधिक जटिल बना दिया है।

जब मैं कोड में अपना UI और एप्लिकेशन प्रवाह बनाता हूं, तो जो कुछ चल रहा है, उस पर मेरा नियंत्रण है, डिबग करना अधिक आसान है, गलतियों को जल्दी से सुलझाना आसान है, अन्य डेवलपर्स के लिए मेरे परिवर्तनों को समझाना आसान है और यह iPhone और iPad का समर्थन करना आसान है।

हालाँकि, मैं इस बात से सहमत हूँ कि कोड में आपके सभी UI को रखना हर परियोजना के लिए एक आकार-फिट-सभी समाधान नहीं हो सकता है। यदि आपका iPad UI कुछ स्थानों पर आपके iPhone UI से बहुत भिन्न है, तो यह उन क्षेत्रों के लिए XIB बनाने के लिए समझ में आता है।

ऊपर उल्लिखित समस्याओं का एक बहुत कुछ Apple द्वारा तय किया जा सकता है और मुझे आशा है कि वे यही करेंगे।

केवल मेरे दो सेंट्स।

अपडेट : Xcode 5 में, Apple ने बिना स्टोरीबोर्ड के प्रोजेक्ट बनाने का विकल्प छीन लिया। मैंने एक छोटी सी स्क्रिप्ट लिखी है जो Xcode 4 के टेम्प्लेट (स्टोरीबोर्ड-ऑप्ट-आउट विकल्प के साथ) Xcode 5 को पोर्ट करता है: https://github.com/jfahrenkrug/Xcode4templates


45
कहानी बोर्डों का प्रशंसक नहीं है, एह? :)
लॉजिस्टोलॉजिस्ट

3
@ ज्योतिषविद हाहा, नहीं, वास्तव में नहीं। स्टोरीबोर्ड्स के बिना और बिना iOS प्रोजेक्ट्स पर काम करने के बाद, मैं इस नतीजे पर पहुँचा कि मैं वास्तव में उन्हें पसंद नहीं करता हूँ :)
जोहान्स फारेनक्रग

4
@Rob जबकि यह लग सकता है जैसे मुझे लगता है कि, मैं वास्तव में नहीं। मैं कई तरीकों से कल्पना कर सकता हूं कि यूआई को बिछाने के लिए कोड में यह सब लिखने से बेहतर तरीके से किया जा सकता है। मुझे लगता है कि स्टोरीबोर्ड के बारे में मेरी सबसे बड़ी आलोचना उनके पीछे के विचार के बजाय उनका कार्यान्वयन है। मेरे द्वारा रेखांकित किए जाने वाले अधिकांश बिंदुओं को बेहतर टूल और बेहतर कार्यान्वयन के साथ तय किया जा सकता है (एक ऐसा उदाहरण जो मानव ट्रैक और उदाहरण के लिए परिवर्तनों को समझने देता है)। जब वे इस बिंदु पर सुधार करते हैं कि लाभ कमियां हैं, तो मैं ख़ुशी से उन्हें एक और मौका दूंगा और अपनी राय बदलूंगा। लेकिन वह दिन आज नहीं है :)
जोहान्स फारेनक्रग

4
@ रब हां, मैंने कभी भी उनके धीमे होने की शिकायत नहीं की। विलय बेहतर हो गया है, लेकिन अगर दो डेवलपर्स स्टोरीबोर्ड के एक ही क्षेत्र में काम करते हैं, तो मर्ज संघर्षों को हल करना असंभव है: स्टोरीबोर्ड एक्सएमएल को केवल मानव-संपादन योग्य नहीं बनाया गया है। आप पूरी तरह से सही हैं कि "10 स्क्रीन के साथ एक सरल ऐप" कोड की तुलना में स्टोरीबोर्ड के साथ तेजी से किया जा सकता है, मैं यह तर्क नहीं देता हूं। हालाँकि, केवल बहुत ही कम एप्लिकेशन ऐसे हैं जो सरल हैं या वे सरल हैं। जैसा कि ऊपर उल्लिखित है, imho जब आपका ऐप बढ़ता है और अधिक जटिल हो जाता है तो आप स्टोरीबोर्ड का उपयोग करते हुए बहुत समय खो देते हैं।
जोहान्स फारेनक्रग

4
मैं इस सूची में जोड़ूंगा कि इंटरफ़ेस बिल्डर फ़ाइलें कम भविष्य के प्रमाण हैं। मैंने पुरानी (iOS 5 युग) .xib और .storyboard फ़ाइलों को एक आधुनिक (iOS 7 युग) Xcode में खोला है और इसे प्रदर्शित करने का प्रयास किया है। इंटरफ़ेस बिल्डर फाइलें आम तौर पर बड़े आकार के बदलावों के साथ स्क्रीन के आकार और आईओएस संस्करणों में चलते समय टूट जाती हैं (उदाहरण के लिए iOS 6 से 7)। ये दृश्य अद्यतन कई अजीब कलाकृतियों और नासमझ स्टोरीबोर्ड मनोरंजन के बिना हुए होंगे यदि यूआई केवल कोड में बनाया गया था।
Xander Dunn

17

स्टोरीबोर्ड डेवलपर्स को उनके आवेदन और आवेदन के प्रवाह की कल्पना करने में मदद करने के लिए बनाए गए थे। यह xib का एक गुच्छा है, लेकिन एक ही फाइल में होने जैसा नहीं है।

इस स्थित के समान एक प्रश्न है .xib फ़ाइल और .storyboard के बीच अंतर क्या है?

आप कोड के माध्यम से कस्टम बदलाव भी कर सकते हैं जो जरूरत पड़ने पर गतिशील रूप से बदल जाएगा।

पेशेवरों:

  • आप किसी भी कोड को लिखे बिना, किसी भी कोड के प्रवाह का मजाक उड़ा सकते हैं।
  • स्क्रीन और आपके एप्लिकेशन प्रवाह के बीच आपके संक्रमण को देखने के लिए बहुत आसान है।
  • स्टोरीबोर्ड के साथ जरूरत पड़ने पर .xibs का भी उपयोग कर सकते हैं।

कान्स:

  • केवल iOS 5+ के साथ काम करता है। IOS4 के साथ काम नहीं करता है।
  • यदि आपके पास बहुत ही गहन अनुप्रयोग है, तो आसानी से बंद हो सकते हैं।

एक या दूसरे का उपयोग करने के लिए वास्तव में कोई सही / गलत नहीं है, यह केवल वरीयता का मामला है और आप किन iOS संस्करणों का उपयोग करना चाहते हैं।


मुझे उनके बीच अंतर पता है और वे कैसे काम करते हैं, मैं इस बात की जानकारी ले रहा हूं कि एक का उपयोग कब करना है, दूसरे का उपयोग करना है या दोनों का उपयोग करना है।
23

13

मैं सिर्फ 4 सरल कारण बताऊंगा कि आपको स्टोरीबोर्ड का उपयोग क्यों करना चाहिए , विशेष रूप से एक उत्पादक वातावरण में जहां आपको उत्पाद मालिकों, उत्पाद प्रबंधकों, यूएक्स डिजाइनरों, आदि की टीम में काम करना है।

  1. Apple ने स्टोरीबोर्ड के साथ काम करने में काफी सुधार किया है। और वे आपको उनके साथ काम करने के लिए प्रोत्साहित करते हैं। जिसका अर्थ है कि वे अपडेट के साथ आपकी मौजूदा परियोजनाओं को नहीं तोड़ेंगे, वे सुनिश्चित करेंगे कि स्टोरीबोर्ड नए XCode / iOS संस्करणों के लिए भविष्य के प्रमाण हैं।
  2. निर्माण चरण के दौरान भी उत्पाद मालिकों और प्रबंधकों के लिए कम समय में अधिक दृश्यमान परिणाम दिखाई देते हैं । तुम भी एक स्क्रीनफ्लो आरेख के रूप में स्टोरीबोर्ड का उपयोग कर सकते हैं और बैठकों में चर्चा कर सकते हैं।
  3. एक ऐप किए जाने के बाद भी (और आमतौर पर जहां इसका जीवन-चक्र शुरू होता है) - भविष्य में यह छोटे समायोजन लागू करने के लिए तेज़ और आसान होगा । और ये एक ही समय में आपके लेआउट के कई पहलुओं को अच्छी तरह से बदल सकते हैं, जिसे आप शायद WYSIWYG तरीके से देखना चाहते हैं। विकल्प कोड में हाथ से लिखने वाले यूआई परिवर्तन और आईडीई और सिम्युलेटर के बीच आगे पीछे स्विच करना होगा, हर बार संकलन और निर्माण के लिए इंतजार करना होगा।
  4. गैर-डेवलपर्स को स्टोरीबोर्ड में लेआउट सेट करने और डेवलपर्स के लिए आवश्यक हुक बनाने के लिए सिखाया जा सकता है (IBOutlets और IBActions)। यह एक बहुत बड़ा प्लस है क्योंकि यह देवों को तर्क पर ध्यान केंद्रित करने देता है और यूएक्स डिजाइनर अपने बदलाव को दृश्य तरीके से लागू करते हैं, बिना किसी कोड को लिखे।

मैं कोई भी CONS नहीं लिखूंगा, क्योंकि जोहानिस ने पहले ही अपने उत्तर में सभी व्यवहार्य लोगों को सूचीबद्ध कर लिया है। और उनमें से ज्यादातर निश्चित रूप से व्यवहार्य नहीं हैं, खासकर XCode6 के प्रमुख सुधारों के साथ नहीं।


5
कहानी बोर्डों के एक प्रशंसक, एह? :)
जॉनपयेन

5

मुझे नहीं लगता कि आपके प्रश्न का कोई सही उत्तर है, यह सिर्फ व्यक्तिगत अनुभव की बात है और आप इसके बारे में अधिक सहज महसूस करते हैं।

मेरी राय में, स्टोरीबोर्ड एक महान चीज है। यह सच है, यह पता लगाना वास्तव में कठिन है कि आपका ऐप रनटाइम के दौरान क्यों दुर्घटनाग्रस्त हो रहा है, लेकिन कुछ समय और अनुभव के बाद आपको एहसास होगा कि यह हमेशा कहीं न कहीं गुम होने वाले कुछ IBOutlet से संबंधित है और आप इसे आसानी से ठीक कर पाएंगे।

स्टोरीबोर्ड के साथ संस्करण नियंत्रण में टीम का एकमात्र वास्तविक मुद्दा काम कर रहा है, विकास के शुरुआती चरणों में यह एक वास्तविक गड़बड़ हो सकता है। लेकिन उस पहले चरण के बाद, यूआई अपडेट जो स्टोरीबोर्ड को पूरी तरह से बदल देता है, बहुत दुर्लभ हैं, और ज्यादातर मामलों में आप एक्सएमएल के अंतिम हिस्सों में संघर्षों के साथ समाप्त होते हैं, जो कि संदर्भ हैं जो स्टोरीबोर्ड को दोबारा खोलने पर आमतौर पर खुद को ऑटोफिक्स करते हैं। । हमारी टीम के काम में हमने भारी व्यू-कंट्रोलर्स के बजाय टन कोड वाले व्यू-कंट्रोलर्स से निपटना पसंद किया।

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

मुझे यह भी लगता है कि स्टोरीबोर्ड को नापसंद करने वाले अधिकांश लोग पूरी तरह से एक कस्टम मैनुअल सेगमेंट की शक्ति को समझने की कोशिश नहीं करते थे, जहां आप पूरी तरह से अनुकूलित कर सकते हैं (एक फ़ाइल में) जिस तरह से आप दूसरे से संक्रमण करते हैं और साथ ही (साथ में) कुछ ट्रिक्स) यहां तक ​​कि पूरी तरह से पूरी चीज को फिर से लोड करने के बजाय इसे देखने वाली सामग्री को अपडेट करके पहले से लोड किए गए व्यू कंट्रोलर का पुन: उपयोग करें। अंत में आप कोड के रूप में वास्तव में वही चीजें कर सकते हैं, लेकिन मुझे लगता है कि आपके पास स्टोरीबोर्ड के साथ चिंताओं का बेहतर अलगाव है, लेकिन मैं मानता हूं कि कई चीजों में उनके पास सुविधाओं (फोंट, रंग पृष्ठभूमि के रूप में छवि, ecc) की कमी है ... )।


2
वास्तव में XCode और स्टोरीबोर्ड के साथ काम करने के बाद मैं केवल यह बता सकता हूं कि यह एक बुरा सपना है, और आप सभी के लिए इसका बचाव करते हुए और इसके बारे में "महान बात" के रूप में कह रहा हूं: मैं कहता हूं: आपने अब तक महान चीज नहीं देखी है (यह एक पहाड़ी की तरह है) उन लोगों के लिए एक पर्वत है जो पहाड़ों में नहीं हैं)। महानता के करीब है जो Android में उपलब्ध है; xml कि मानव दृश्य संपादक के साथ पठनीय हैं, आपको बहुत मदद करता है, और यह "महान चीज" भी नहीं है, बस कुछ ऐसा है जो किसी भी सामान्य डेवलपर को कार्यक्षमता के आधार के रूप में पेश करेगा।
लुकाज़ 'सेवरिया' ग्रीला

मैं आपसे पूरी तरह असहमत हूं, आईओएस पर स्विच करने से पहले मैं एक एंड्रॉइड डेवलपर हूं, मैं हमेशा XML लेआउट पर स्टोरीबोर्ड चुनूंगा। यह कई मामलों (सभी परिदृश्यों के लिए नहीं, बल्कि उनमें से अधिकांश के लिए काम करता है) के लिए एक महान बात है और मैं इसे देखने वाले नियंत्रकों में कोड का एक गुच्छा पसंद करता हूं जो निश्चित रूप से कम तत्काल है। अंत में, यह केवल राय और परिदृश्यों की बात है।
स्टेफानो मोंडिनो

अगर मैं कोणीय यूआई राउटर का उपयोग कर रहा हूं तो मुझे पृथ्वी पर स्टोरीबोर्ड का उपयोग करने की आवश्यकता क्यों है?
यवोन एब्रो

0

मैं अपने किसी भी ऐप में StoryBoard या XIBs का उपयोग नहीं कर रहा हूं .. लेकिन प्रोग्रामेटिक रूप से सब कुछ बना रहा हूं।

∆ लाभ:

√ आप किसी भी प्रकार के UI या संक्रमण एनिमेशन को बना सकते हैं UIView

√ सभी iOS संस्करणों का समर्थन करें। <IOS 5 के बारे में चिंता करने की कोई ज़रूरत नहीं है।

√ * आपका ऐप आपके कोड के भीतर सभी iPhone / iPod / iPad उपकरणों का समर्थन करेगा।

As आप हमेशा अपडेट रहते हैं क्योंकि आपको पता है कि कोड हमेशा काम करेगा।

√ * लॉन्च किए गए किसी भी (नए) डिवाइस पर काम करेगा - कोड में बदलाव की आवश्यकता नहीं है।

√ सब कुछ आप पर निर्भर है। निश्चित स्थान पर आप कुछ बदलना चाहते हैं - स्टोरीबोर्ड या xib पर ध्यान देने की आवश्यकता नहीं है। बस इसके लिए विशेष वर्ग में खोजें।

√ अंतिम लेकिन सूची नहीं - आप यह कभी नहीं भूलेंगे कि, प्रोग्रामेटिक रूप से सब कुछ कैसे प्रबंधित करें। यह सबसे अच्छी बात है क्योंकि आप किसी नियंत्रण को बहुत गहराई से जानते हैं।

मुझे एसबी या एक्सआईबी का उपयोग न करने से कभी कोई समस्या नहीं हुई क्योंकि मैं इसके साथ अच्छा हूं।

* यदि आपने स्क्रीन के आकार के अनुसार UIKit का ऑब्जेक्ट फ्रेम सेट किया है।

PS यदि आपने अभी भी यह काम नहीं किया है - तो आपको कठिनाई का सामना करना पड़ सकता है (या उबाऊ लग सकता है) लेकिन एक बार जब आप इससे परिचित हो जाते हैं - तो यह वास्तव में आपके लिए एक कैंडी है।


किसी भी स्टोरीबोर्ड या XIB के बिना मूल "सब कुछ प्रोग्राम बनाने वाला" iOS और OSX अनुप्रयोगों के लिए एक स्विफ्ट टेम्पलेट / उदाहरण कहां मिल सकता है?
l --marc l

0

यदि आप स्टोरीबोर्ड प्रदर्शन के बारे में ध्यान रखने वाले हैं, तो WWDC 2015 सत्र 407 देखें

यहां छवि विवरण दर्ज करें

निर्माण समय

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

अगर मेरे पास व्यू व्यू और सब व्यूज, इंटरफेस बिल्डर का एक गुच्छा है, तो बिल्ड टाइम व्यू कंट्रोलर के लिए एक निब फाइल बनाने और व्यू के लिए एक निब फाइल बनाने जा रहा है।

व्यू कंट्रोलर और व्यू दोनों के लिए अलग-अलग nib फाइल्स होने से, इसका मतलब है कि व्यू पदानुक्रम को डिमांड पर लोड किया जा सकता है।

रन टाइम

जब आप यूआई स्टोरीबोर्ड, एपीआई का उपयोग करके एक स्टोरीबोर्ड उदाहरण आवंटित करते हैं, तो शुरू में आप सभी के लिए मेमोरी आवंटित कर रहे हैं यूआई स्टोरीबोर्ड उदाहरण ही है।

कोई दृश्य नियंत्रकों कोई विचार अभी तक नहीं।

जब आप अपने प्रारंभिक दृश्य नियंत्रक को त्वरित करते हैं तो यह उस प्रारंभिक दृश्य नियंत्रक के लिए nib को लोड करेगा लेकिन, फिर से, कोई दृश्य पदानुक्रम अभी तक लोड नहीं किया गया है जब तक कि कोई वास्तव में इसके लिए नहीं पूछता है।


0

मैं एक यथोचित आकार की परियोजना (स्टोरीबोर्ड पार्लेंस में 20 दृश्य) पर काम कर रहा हूं, और कई सीमाओं के पार आया हूं और बार-बार प्रलेखन और Google खोज पर चीजों को करने के लिए जाना पड़ता है।

  1. UI सभी एक फ़ाइल में है। यदि आप कई स्टोरीबोर्ड बनाते हैं, तो भी आपके पास प्रत्येक स्टोरीबोर्ड में कई दृश्य / स्क्रीन हैं। मध्यम-बड़ी टीमों में यह एक समस्या है।

  2. दूसरे, वे कस्टम कंटेनर कंट्रोलरों के साथ अच्छा नहीं खेलते हैं जो अन्य कंटेनर नियंत्रकों आदि को एम्बेड करते हैं। हम MFSlideMenu का उपयोग टैब्ड एप्लिकेशन में कर रहे हैं और दृश्य में एक टेबल है। स्टोरीबोर्ड के साथ ऐसा करना लगभग असंभव है। दिन बिताने के बाद, मैंने एक्सआईबी तरीका करने का सहारा लिया है जहां पूरा नियंत्रण है।

  3. IDE ज़ूम-आउट स्थिति में नियंत्रणों का चयन करने की अनुमति नहीं देता है। इसलिए, एक बड़े प्रोजेक्ट में, जूम-आउट को एक उच्च स्तरीय दृश्य प्राप्त करना है और इससे अधिक कुछ नहीं है।

मैं छोटे टीम आकारों के साथ छोटे अनुप्रयोगों के लिए स्टोरीबोर्ड का उपयोग करेगा और मध्यम-बड़ी टीमों / परियोजनाओं के लिए XIB दृष्टिकोण का उपयोग करेगा।


ये तीन बिंदु अब पूरी तरह से पुराने हो गए हैं (साभार)
फेटी

0

यदि आप कई व्यू कंट्रोलर में कुछ यूआई का पुन: उपयोग करना चाहते हैं तो आपको XIBs का उपयोग करना चाहिए

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.