无法让微调器出现

时间:2011-01-03 17:23:44

标签: ios uiactivityindicatorview

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

//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 个答案:

答案 0 :(得分:14)

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

解决方案是使用异步请求。委托代码看起来就像你已经这样做了,但另一方面,启动调用提到了同步操作。小心解释一下? (或者我忽视了什么?)

答案 1 :(得分: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];然而,这只是众多方法中的一种。

答案 2 :(得分:0)

问题可能在于你要添加微调器。是否能够,并且它是否具有显示活动指标的尺寸? (例如,UIBarButtonItems无法处理addSubview)