2012-08-27 30 views
11

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

यह वह कोड है जो दृश्य में प्रगति पट्टी को जोड़ता है।

HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; 
[self.view.window addSubview:HUD]; 

// Set determinate mode 
HUD.mode = MBProgressHUDModeAnnularDeterminate; 

HUD.labelText = @"Loading"; 

// myProgressTask uses the HUD instance to update progress 
[HUD showWhileExecuting:@selector(processFieldEntries) onTarget:self withObject:nil animated:YES]; 

साथ आवेदन त्रुटियों:

*** Assertion failure in -[MBProgressHUD initWithView:], /Users/.../MBProgressHUD/MBProgressHUD.m:190 

इसके अलावा

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'View must not be nil.' 

और

Crash: View must not be nil. 

किसी को भी पता है क्या अभिकथन विफलता के लिए है और कैसे हल करने के लिए। MBProgressHUD.m फ़ाइल को बिल्ड चरण टैब और फ़ाइल में शामिल शीर्षलेख के अंतर्गत संकलन स्रोतों में शामिल किया गया है। क्षेत्र सत्यापन को संसाधित करने की प्रक्रिया में प्रगति को जोड़ा जा रहा है।

उत्तर

16

हाय यहाँ एचयूडी डिस्प्ले पर एक त्वरित युक्ति है।

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

तो उदाहरण के लिए यदि आप मूल दृश्य नियंत्रक, या एक मोडल आदि में हैं।ऐसा कुछ करें:

HUD = [[MBProgressHUD alloc] initWithView:self.view]; 
[self.view addSubview:HUD]; 

ध्यान दें कि आप इसे उसी दृश्य में जोड़ रहे हैं जिसे आपने आरंभ किया था।

यह भी ध्यान रखें कि आप भी दृश्य में यह सामान कर सकते हैं और साथ ही की तरह: self.navigationcontroller.view, self.splitviewcontroller.view या मेरी पसंदीदा: self.splitviewcontroller.view.superview (कवर और देखने के दोनों पक्षों को निष्क्रिय करने के)।

मुझे लगता है कि यदि आप अपने ऐप के सही दृश्य के साथ उदाहरण उदाहरण का पालन करते हैं तो आपकी समस्या स्वयं ही हल हो जाएगी।

अच्छी तरह से हो।

+0

ty। मैं इस उदाहरण में एक NavController का उपयोग नहीं कर रहा था इसलिए अकेले दृश्य से init होना चाहिए। – StuartM

+0

+ 1, बहुत अच्छा जवाब ... – AppStore

1

आप उस कोड स्निपेट का उपयोग कहां करते हैं? यदि आप कुछ अन्य विवरण प्रदान करते हैं तो मैं आपकी मदद कर सकता हूं। इस बीच, कुछ विवरणों की प्रतीक्षा कर रहा हूं, मैं आपको अपनी समस्या पर कुछ संकेत दे सकता हूं।

मुझे लगता है कि जब आप अपने नेविगेशन नियंत्रक के लिए MBProgressHUD

HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; 

view बनाने nil और इसलिए समस्या है।

आप MBProgressHUD कोड (MBProgressHUD.m) आप देख सकते हैं इस तरह एक नियंत्रण की जांच है कि वहाँ नेविगेट करते हैं:

NSAssert(view, @"View must not be nil."); 

और इतने कोड बंद हो जाता है, क्योंकि यह नियंत्रण में नहीं होता है।

यह काम करने के लिए आपको एक गैर-nilview पास करने की आवश्यकता है।

यदि आपने एक कक्षा बनाई है जो UIViewController (उदाहरण के लिए) बढ़ाती है तो आप viewDidAppear विधि में एचयूडी प्रस्तुत कर सकते हैं। वहां आप सुनिश्चित हैं कि आपके व्यू कंट्रोलर के लिए view बनाया गया है और प्रदर्शित किया गया है।

वैकल्पिक रूप से, विंडो के उप-दृश्य के रूप में एचयूडी जोड़ें। अधिक जानकारी के लिए आप MBProgressHUD not showing देख सकते हैं।

उम्मीद है कि मदद करता है।