7

मेरे पास वर्तमान में नेविगेटेड देखने के लिए एक बटन है जो आईबीएक्शन से जुड़ा हुआ है।UIActivityIndicator लोड होने के बाद तक दिखाई नहीं दे रहा है

आईबीएक्शन में मैं सामान्य रूप से एक यूआईएक्टिविटी इंडिकेटर व्यू बना देता हूं, [self.view addSubView] के साथ, फिर कुछ चित्र लोड करें।

मैंने सूचक दृश्य, दृश्य नियंत्रक, और खिड़की पर setNeedsDisplay की कोशिश की है, लेकिन यह अभी भी संकेतक दिखाने से पहले चित्र लोड करता है, जो निश्चित रूप से मेरे लिए काफी बेकार है।

तो मैं या तो तत्काल रेड्रो को मजबूर करने का एक तरीका ढूंढ रहा हूं (जो मुझे लगता है कि इसके बारे में थोड़ा और अधिक काम करने की संभावना नहीं है), या संकेतक के बाद चित्रों को लोड करने का एक तरीका, या एक एनिमेटिंग शुरू करने/संकेतक को शुरू करने के लिए एक अलग धागा या समान लॉन्च करने का तरीका, या सूचक को एक अलग व्यू कंट्रोलर में डालें और किसी भी तरह से इसे चित्र लोड करने पर जाने से पहले स्वयं को जोड़ने/दिखाने के लिए मजबूर करें।

सिफारिशें?

उत्तर

18

मैं इस स्थिति में जो करता हूं वह एक नया धागा पैदा करता है, जो पृष्ठभूमि में सामान लोड होने पर यूआई इंटरैक्शन को संभालने के लिए मुख्य धागे को मुक्त करता है।

पहले UIActivityIndicatorView दिखाएं, फिर छवियों को लोड करने वाले एक नए थ्रेड को स्पैन करें, फिर नए धागे में निष्पादित विधि की अंतिम पंक्ति पर, UIActivityIndicatorView छुपाएं।

//do stuff... 
[activityIndicatorView startAnimating]; 
[NSThread detachNewThreadSelector:@selector(loadImages) toTarget:self withObject:nil]; 

अपने loadImages विधि में:

- (void) loadImages { 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    //load images... 
    [activityIndicatorView performSelectorOnMainThread:@selector(stopAnimating)]; 
    [pool drain]; 
} 
+0

, धन्यवाद एक आकर्षण की तरह काम किया

यहाँ एक उदाहरण है! और यह इस तरह के एक के लिए आसान और उपयोगी है। भारी लोडिंग और धागे के साथ भारी ऐप में उपयोग करने के दौरान इसे कैसे सोचने के बारे में कोई सुझाव है? –

+1

+1 धागा बनाएं! अच्छा उत्तर। – jv42

+1

मेरी इच्छा है कि मैं इसे दस लाख बार बढ़ा सकता हूं। – Mason

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