Не могу найти блесну
Я хотел бы использовать блесну. Но этот код ниже не отображает счетчик, и я не уверен почему. Как заставить это работать? Кстати, он вызывается с помощью кнопки отправки, которую я создал.
//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 ответа
Если вы вызываете некоторый код блокировки сразу после отображения счетчика, пользовательский интерфейс не будет обновляться, поскольку он обновляется только при выполнении основного цикла выполнения. Если это действительно является источником проблемы, счетчик должен появиться, когда вы закомментируете [request startSynchronous]
линия для теста.
Решением будет использование асинхронного запроса. Код делегирования выглядит так, как будто вы уже это делаете, но с другой стороны, стартовый вызов упоминает синхронную операцию. Хотите объяснить? (Или я что-то упустил?)
//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]; Это, однако, только один из многих подходов.
Проблема может заключаться в том, что вы добавляете счетчик. Способен ли и имеет ли он размеры для отображения индикатора активности? (например, UIBarButtonItems не может обрабатывать addSubview)