iphone - NSXMLParser avoids UILabel to show/hide -
मेरी कक्षा में मेरे पास निम्न विधियां हैं:
- (IBAction) loginToAccount :( आईडी) प्रेषक {// नेटवर्क गतिविधि का स्थिति संकेतक प्रदर्शित करें [UIApplication साझा किया गया अनुप्रयोग] .नेटवर्कएक्टिविटीइंडिकेटरविजय = हाँ; // लोड सूचक दिखाएं [self.loadIndicator startAnimating]; Self.loadIndicator.hidden = NO; Self.loadLabel.hidden = नहीं; [प्रयोक्तानामटेक्स्टफिल्ड रेजिन्सफ्रास्ट रेस्पॉन्डर]; [PasswordTextField रेजिनफ़ीररस्पॉन्डर]; [आत्म चेकलागिन क्रेडेंशियल्स]; } - (शून्य) चेक लॉन्ग क्रेडेंशियल्स {NSString * APIURL = [[NSString alloc] initWithFormat: @ "http://mysite.com/xml.xml"]; NSURL * url = [[एनएसयूआरएल आलोक] initWithString: APIURL]; NSXMLParser * xmlParser = [[NSXMLParser alloc] initWithContentsOfURL: url]; [एपीआईयूआरएल रिलीज]; [यूआरएल रिलीज]; [XmlParser सेट Delegate: self]; [XmlParser parse]; }
जब मैं [self checklogincredentials]
पर टिप्पणी करता हूं, तो लोड इंडिकेटर एनिमेटेड हो जाता है और दिखाया जाता है, लेकिन जब मैं [self checklogincredentials]
को अस्वीकार करता हूं, लोड इंडिकेटर नहीं दिखाता है और usernameTextField / passwordTextField resignFirstResponder
कोई काम नहीं करते।
मैं क्या कर रहा हूँ गलत? धन्यवाद!
मुझे विश्वास है कि -initWithContentsOfURL:
एक तुल्यकालिक यूआरएल कनेक्शन है, और इसलिए यह धागा को ब्लॉक करता है जब तक कि यह पूर्ण नहीं हो जाता।
इस वजह से, प्रगति संकेतक नहीं दिखाएगा क्योंकि इसके लिए यह आवश्यक है कि जिस धागे पर चल रहा है उसका एक सक्रिय चलने वाला पाश है मुख्य थ्रेड पर तुल्यकालिक यूआरएल कनेक्शन का प्रयोग उस धागे पर यूआई ब्लॉक करेगा, ताकि आप अपनी प्रगति सूचक को नहीं देखेंगे।
ऐसा करने का सही तरीका NSURLConnection का उपयोग करना होगा
< पूर्व> + (NSURLConnection *) connectionWithRequest: (NSURLRequest *) अनुरोध प्रतिनिधि: (आईडी) प्रतिनिधि
बस एक NSURLRequest ऑब्जेक्ट बनाएँ जो आपके एपीआई अनुरोध को एनकैकेट करता है, और उसके बाद इसे पास करें
इस पद्धति का लाभ यह है कि यह सब एक अलग थ्रेड पर किया जाता है और उसे संभाला जाता है।
आपके लिए, और इसलिए आपके यूआई को ब्लॉक नहीं करेगा।
Comments
Post a Comment