2012-07-27 13 views
11

मेरे पास स्टोरीबोर्ड में 150 UIViewController है और इन दृश्यों के बीच स्क्रॉलिंग बहुत धीमी है। मैं ज़ूम इन नहीं कर सकता और आसानी से ज़ूम आउट नहीं कर सकता और स्टाई करने में कुछ गंभीर समय लगता है।एक्सकोड में स्टोरीबोर्ड इतनी धीमी है

मैं MBPR पर हूँ और मैं Xcode 4.4

स्थापित युक्ति: 2.3GHz/16G/256 जो मुझे लगता है कि ऐसी बात को संभालने के लिए काफी है।

क्या स्टोरीबोर्ड में इतने सारे विचार रखने के लिए कोई विकल्प, सेटिंग्स या टिप्स/चाल हैं और प्रदर्शन को याद नहीं करते हैं।

नोट: मैंने सभी संभावित समाधान (कैश और वर्कस्पेस को हटाया) किया है। काम नहीं किया स्टोरीबोर्ड में UIViewController की संख्या के साथ इसका कुछ संबंध है।

धन्यवाद

अद्यतन 2016: बस इस सवाल का अद्यतन करने के लिए के रूप में वहाँ Xcode 7 में एक नई सुविधा है कि आप एकाधिक स्टोरीबोर्ड उन में स्टोरीबोर्ड refactor करने के लिए अनुमति देता है।

पुनर्रचना स्टोरीबोर्ड उन https://developer.apple.com/library/ios/recipes/xcode_help-IB_storyboard/Chapters/RefactorStoryboard.html

आप शब्द "रिफैक्टरिंग स्टोरीबोर्ड" खोज यदि आप अच्छा ट्यूटोरियल :) एक स्टोरीबोर्ड में

+0

क्या आपने अपनी समस्या का हल कर लिया है? हो सकता है कि आप सही उत्तर –

+0

ओह मेरे ब्रो !!, 150 वीसी, दर्द महसूस कर सकते हैं: -s –

उत्तर

6

निश्चित रूप से इसके लिए एकाधिक स्टोरीबोर्ड का उपयोग करना है, तो अपने प्रवाह को कम करने या एकाधिक स्टोरीबोर्ड में विभाजित करने का प्रयास करें। मुझे स्टोरीबोर्ड का उपयोग करने में किसी भी सीमा के बारे में पता नहीं है, लेकिन एक ही समय में उन सभी यूआई कोड को प्रस्तुत करने की कोशिश करना आपके मशीन के लिए कठिन है और डेवलपर्स को समझना भी मुश्किल है। "ProfileSB, feedSB, mapSB, messagesSB, settingsSB"

यहाँ इन के निर्माण के बारे में कुछ अच्छा ट्यूटोरियल हैं:
http://spin.atomicobject.com/2014/02/18/ios-storyboards-xcode5/
http://www.skillmasters.net/main/xcode-using-multiple-storyboards/

+0

इस जवाब को एक्सकोड के एक नए संस्करण में पूरा करने के लिए, स्टोरीबोर्ड को रिफैक्टर करना https://developer.apple.com/library/ios/recipes/xcode_help-IB_storyboard/Chapters/RefactorStoryboard.html – Maziyar

3

150 ViewControllers मिलेगा मेरे लिए बहुत भयानक लग रहा है। यदि आपको वास्तव में बहुत से

+1

हाय दोस्त, भयानक लगता है लेकिन स्टोरीबोर्ड का उपयोग करने में कोई सीमा है? बात यह है कि स्टोरीबोर्ड में कितने विचार हो सकते हैं इसके बारे में कुछ भी नहीं है। मैंने उन्हें सब पढ़ा और कोई भी नहीं था। मैंने उन्हें कम करने और गतिशील रूप से सामग्री प्रदर्शित करने की कोशिश की लेकिन यह मेरे लिए क्लाइंट ने पहले नहीं किया और मैं बस कुछ प्रमुख उन्नयन कर रहा हूं। मैंने जिज्ञासा से पूछा कि क्या कोई सुझाव या चाल है या यहां तक ​​कि एक सीमा भी है। जवाब के लिए धन्यवाद। और दो स्टोरीबोर्ड के विभाजन के बारे में नहीं सोचा था। धन्यवाद। – Maziyar

1

कोशिश तार्किक जैसे श्रेणियों में अपने स्टोरीबोर्ड परमात्मा के लिए

मेरे पास UIStoryboard था 10 या अधिक UIViewControllers और अतिरिक्त ContainerViews के साथ। विचारों को लेआउट करने और अधिक से अधिक अनुकूलित करने के बाद, UIStoryboard अधिक से अधिक आलसी हो गया।

मेरा दृष्टिकोण एकल UIStoryboards के अंदर विचारों को सेट करना था।

enter image description here

जब मेनू लोड हो रहा है, मैं NSArray के माध्यम से और पाश: नियंत्रकों लोड हो रहा है मेरी मेनू जहां UIViewController के सभी पहचानकर्ताओं जो भी UIStoryboard अंदर सेटअप होना है के साथ एक NSArray मैं सेटअप, अंदर किया जाता है विशिष्ट UIStoryboard से पहचानकर्ताओं द्वारा UIViewControllers लोड करें।यह जगह है जहाँ मैं, एक स्विच लागू करने की जरूरत अलग UIStoryboards के लिए है:

self.arrayVCAll = [NSMutableArray new]; 
for (NSArray *array in _arrayViewControllerAll){ 

    NSMutableArray *arrayTemp = [NSMutableArray new]; 

    for (UIViewController *vc in array){ 
     NSString *strViewController = [NSString stringWithFormat:@"%@", vc]; 
     UIStoryboard *storyboard; 

     if([strViewController isEqualToString:@"CustomOneStoryboard"]){ 
      storyboard = [UIStoryboard storyboardWithName:@"FirstVC" bundle:nil]; 

     } else if([strViewController isEqualToString:@"CustomTwoStoryboard"]){ 
      storyboard = [UIStoryboard storyboardWithName:@"SecondVC" bundle:nil]; 

     } else { 
      storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
     } 

     UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:strViewController]; 

     MyNavController *nav = [[MyNavController alloc] initWithRootViewController:controller]; 
     [arrayTemp addObject:nav]; 
    } 

    [self.arrayVCAll addObject:arrayTemp]; 
} 

मेरे मामले में, वहाँ मेरी UIViewControllers से प्रारंभिक UINavigationController को अलग करने के बाद segues के साथ सिर्फ एक समस्या थी। अगर कोई प्रारंभिक UINavigationController नहीं है, तो segues नेविगेशन नियंत्रक को नहीं दबाएगा। Thats क्यों मैंने प्रत्येक UIViewController (मेरे एनएसएआरएआरई) पर UINavigationController जोड़ा है, इसलिए UIStoryboardSegue सही तरीके से किया जाएगा। UINavigationController को किसी वर्ग से कनेक्ट होने की आवश्यकता नहीं है, बस इसे UIStoryboard के अंदर शामिल करें और इसे पहले UIViewController से कनेक्ट करें।

7

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

हालांकि मेरे पास एक और मुद्दा था जो स्टोरीबोर्ड अंतराल का कारण बन रहा था। मेरे पास लगभग 25 व्यू कंट्रोलर था और बहुत सारी अंतराल प्राप्त हो रही थी - लेकिन केवल जब बाहरी मॉनिटर पर एक्सकोड चल रहा था।

मैंने देखा कि अगर मैंने स्टोरीबोर्ड के लिए "ऑटो लेआउट" अक्षम कर दिया है, तो अंतराल पूरी तरह से गायब हो जाएगा। मैं इस बदलाव को वापस लाया गया, और फिर निम्न प्रक्रिया का पालन: -Delete एक ViewController -Test यह अभी भी -यदि अभी भी laggy बदलाव उलटें

आखिरकार मैं एक निश्चित ViewController जो करता है, तो नष्ट कर दिया सभी अंतराल बंद कर दिया पाया lags है। मैंने फिर इसे वापस कर दिया और विचारों के माध्यम से देखा कि किस दृश्य ने अंतराल का कारण बना दिया। अंत में मैंने इसे "UIBarButtonItem" के अंदर "UIButton" तक सीमित कर दिया। मेरा मानना ​​है कि मैंने बटन पर "टाइप" प्रॉपर्टी बदल दी, और फिर इसे वापस बदल दिया और अंतराल बंद हो गया। एसवीएन से ऐसा लगता है कि फ्रेम .storyboard फ़ाइल में बदल दिया गया था। इस बिंदु के बाद अंतराल कभी वापस नहीं आया।

टीएलडीआर: स्टोरीबोर्ड अंतराल हमेशा नहीं होता क्योंकि आपके पास स्टोरीबोर्ड में बहुत अधिक आइटम हैं। मैं एक्सकोड को कुछ लेआउट फिर से करने के कारण एक अंतराल की समस्या से छुटकारा पाने में कामयाब रहा।

आशा है कि मेरा अनुभव किसी और की समस्याओं का निदान/हल करने में मदद करेगा। मैं वास्तव में लगभग परेशान होने से पहले लगभग 0.5 साल तक काम कर रहा था और इस मुद्दे को हल करने की कोशिश की।

+0

टीएनएक्स दोस्त जो ध्यान में रखने के लिए एक अच्छी युक्ति है :) – Maziyar

+0

बिंगो! मेरे पास अविश्वसनीय धीमापन था और मेरी स्टोरीबोर्ड में केवल 7 दृश्य नियंत्रक हैं। बारबटन इटिम में दो वीसी के यूआईबटन थे। मैंने उन बटनों और तत्काल गति को हटा दिया। अब मुझे समाधान खोजने के कारण, कारण पता है ... – Swany

+0

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