2009-08-14 3 views
0

Я хотел бы знать, как сделать следующее:Спин экрана с подключением

У меня есть одно приложения, которые делают некоторые соединения получить ДАННЫЕ (это Данные могут показать на экране)

Я хотел бы знаю, какой код я могу использовать для ожидания каждого подключения, я имею в виду, время между началом соединения и этим концом я хотел бы показать на экране один оборот (Загрузка ...).

Я создал соединения и вращение. Моя проблема в том, что я не знаю, какой код я могу использовать для управления этим и где писать этот код.

Спасибо!

ответ

0

Вы должны посмотреть на использование NSURLConnection с делегатом. NSURLConnection позволяет вам получать данные с сервера асинхронно (он работает в фоновом режиме и уведомляет делегата, когда происходят определенные события).

Затем, по вашему мнению, класс контроллера, вы можете запустить прядильщик прямо перед запуском соединения, а один из ваших методов делегирования остановит счетчик, когда соединение закончится.

+0

вы можете показать мне это с одним примером, пожалуйста, я не очень хорошо знаю, как создать делегат – 2009-08-14 16:00:31

+0

код вы вывесили в своем ответе хорошо выглядит. - Теперь все, что вам нужно сделать, это дать класс Connection - экземпляр вашего контроллера представления, который должен «@syn thesize' прядильщик. Затем, прежде чем вы вызовете '[theConnection start]', запустите свой счетчик и в 'connectionDidFinishLoading:', остановите его снова. – Tim

+0

Как создать экземпляр? должен ли я создать в Connection.h объект 'view controller' ?? – 2009-08-14 18:50:07

0

это мой код в классе: Connection.h, и я создаю объект Connection в каждом классе, где я хочу вызвать новое соединение для получения данных (я не знаю тогда, если это правильный способ делать)

импорт "connection.h" импорт "XMLParser.h"

@implementation Подключение @synthesize WebData, soapResults, XmlParser;

- (Connection *) Init: (NSInteger *) methodNumber { [super init]; methodNum = methodNumber; return self; }

- (недействительными) соединение: (NSString *) SOAPMessage {

NSLog(soapMessage); 

NSURL *url = [NSURL URLWithString:@"http://.....?WSDL"]; 
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 
NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]]; 

[theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"]; 
[theRequest setHTTPMethod:@"POST"]; 
[theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

//NSURLConnection *theConnection = [NSURLConnection connectionWithRequest:theRequest delegate:self]; 

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 
[theConnection start]; 

if(theConnection) 
{ 
    webData = [[NSMutableData data] retain]; 
} 
else 
{ 
    NSLog(@"theConnection is NULL"); 
} 

}

- (пустоты) соединение: (NSURLConnection *) соединение didReceiveResponse: (NSURLResponse *) ответ { [webData setLength: 0]; }

- (пустоты) соединение: (NSURLConnection *) соединение didReceiveData: данные (NSData *) { [Webdata appendData: данные]; }

- (Недействительными) соединение: (NSURLConnection *) подключение didFailWithError: (NSError *) Ошибка { NSLog (@ "ERROR с theConenction"); [соединение релиз]; [релиз webData]; соединение (NSURLConnection *) {

NSLog (@ "DONE: (аннулируются) connectionDidFinishLoading - }

.Полученное Б:% d», [длина Webdata]);

NSString * theXML = [[NSString Alloc] initWithBytes: [Webdata mutableBytes] Длина: [длина Webdata] Кодирование: NSUTF8StringEncoding];

NSLog(theXML); 
[theXML release]; 




if(xmlParser) 
{ 
    [xmlParser release]; 
} 

xmlParser = [[NSXMLParser alloc] initWithData: webData]; 

//Initialize the delegate. 
XMLParser *parser = [[XMLParser alloc] initXMLParser:methodNum]; 

//Set delegate 
[xmlParser setDelegate:parser]; 


//[xmlParser setDelegate: self]; 
[xmlParser setShouldResolveExternalEntities: YES]; 
[xmlParser parse]; 

[connection release]; 
[webData release]; 

?}

@end

Смежные вопросы