Не могу найти блесну - PullRequest
4 голосов
/ 03 января 2011

Я хотел бы использовать блесну.Но этот код ниже не отображает счетчик, и я не уверен, почему.Как заставить это работать?Кстати, он вызывается с помощью кнопки отправки, которую я создал.

//spinner declared in .h file
UIActivityIndicatorView   *aSpinner; 

//throw up spinner from submit btn we created
aSpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:
    UIActivityIndicatorViewStyleWhiteLarge];

[self.view addSubview:aSpinner]; 
[aSpinner release]; 
[aSpinner startAnimating]; 

//send blocking request 
[request startSynchronous];

//get rid of spinner when finished delegate is fired
- (void)requestFinished:(ASIHTTPRequest *)request 
{ 
    NSLog(@"REQUEST FINISHED"); 
    [aSpinner stopAnimating]; 
    //[aSpinner release]; 
} 

Ответы [ 3 ]

14 голосов
/ 03 января 2011

Если вы вызываете некоторый код блокировки сразу после отображения счетчика, пользовательский интерфейс не будет обновляться, поскольку он обновляется только при выполнении основного цикла выполнения.Если это действительно является источником проблемы, счетчик должен появиться, когда вы закомментируете строку [request startSynchronous] для теста.

Решением будет использование асинхронного запроса.Код делегирования выглядит так, как будто вы уже это делаете, но с другой стороны, стартовый вызов упоминает синхронную операцию.Хотите объяснить?(Или я что-то упустил?)

3 голосов
/ 03 января 2011
//spinner declared in .h file
UIActivityIndicatorView  *aSpinner; 

Также добавьте свойство в заголовочный файл:

@property (nonatomic, retain) UIActivityIndicatorView *aSpinner;

Не забудьте синтезировать в файл .m!

//throw up spinner from submit btn we created
UIActivityIndicatorView *tempSpinner = [[UIActivityIndicatorView alloc]  initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
self.aSpinner = tempSpinner;
[tempSpinner release];

[self.view addSubview:self.aSpinner]; 
[self.aSpinner startAnimating]; 

//send blocking request 
[request startSynchronous];


//get rid of spinner when finished delegate is fire
- (void)requestFinished:(ASIHTTPRequest *)request { 
      NSLog(@"REQUEST FINISHED");
      [self.aSpinner stopAnimating]; 
}

В вашем методе dealloc вы пишете: [aSpinner release]; Это, однако, только один из многих подходов.

0 голосов
/ 01 февраля 2011

Возможно, проблема в том, что вы добавляете счетчик. Способен ли и имеет ли он размеры для отображения индикатора активности? (например, UIBarButtonItems не может обработать addSubview)

...