4

我想用一个微调器。但是,下面的代码没有显示微调器,我不知道为什么。如何使这项工作?顺便说一句,它是从我创建的提交按钮调用的。

//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]; 
} 
4

3 回答 3

14

如果在显示微调器后立即调用一些阻塞代码,则 UI 不会更新,因为它仅在主运行循环运行时更新。如果这确实是问题的根源,那么当您注释掉[request startSynchronous]测试行时,微调器应该会出现。

解决方案是使用异步请求。委托代码看起来您​​已经这样做了,但另一方面,开始调用提到了同步操作。介意解释吗?(或者我忽略了什么?)

于 2011-01-03T17:51:32.793 回答
3
//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]; 然而,这只是众多方法中的一种。

于 2011-01-03T17:48:39.080 回答
0

问题可能在于您将微调器添加到其中。是否有能力,是否具有显示活动指示器的尺寸?(例如 UIBarButtonItems 无法处理 addSubview)

于 2011-02-01T20:56:20.683 回答