iPhone上的UIActivityIndicatorView存在问题

iPhone上的UIActivityIndicatorView存在问题,iphone,objective-c,Iphone,Objective C,我想在我的iphone更改视图时显示UIActivityIndicatorView。 我编写了以下代码: - (void)viewDidLoad { spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; [spinner setCenter:CGPointMake(320/2.0, 460/2.0)]; //

我想在我的iphone更改视图时显示UIActivityIndicatorView。 我编写了以下代码:

- (void)viewDidLoad 
{

  spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
  [spinner setCenter:CGPointMake(320/2.0, 460/2.0)]; // I do this because I'm in landscape mode
  [self.view addSubview:spinner];
}
在按钮的点击事件中,我想改变视图,在此期间,我想显示指示器视图,所以,我写

-(IBAction)buttonClick:(id)sender
{

    [spinner startAnimating];
    ViewController *lController = [[ViewController alloc] initWithNibName: @"View" bundle:nil];
    self.viewController = lController;
    [lController release];
    //
    [[self mainController] dismissModalViewControllerAnimated:YES];
    [lViewController.view removeFromSuperview];
    [self.view addSubview: lController.view];
    [spinner stopAnimating];
 }

它没有显示指示器,所以请告诉我哪里错了?

按钮中单击
,看起来您正在添加
lController.view
“在微调器的顶部”(在前面的
viewDidLoad
中添加)。很难从你的片段中看出模态解雇是怎么回事,所以让我们假设这不是罪魁祸首

添加新的子视图后,您可以尝试调用
[self.view bringsubview tofront:spinner]
,或者
[self.view insertSubview:lController.view belowSubview:spinner]
将视图放在微调器下面。您可能还希望将微调器上的
hidesWhenStopped
属性设置为
YES
,以便在停止时自动隐藏


另一件需要记住的事情是,加载和切换视图实际上可能不会花费那么长的时间,因此如果事情发生得太快,微调器可能不会出现。

按钮中单击
看起来您正在添加微调器的
lController.view
“在顶部”(这是在
viewdiload
之前添加的)。很难从你的片段中看出模态解雇是怎么回事,所以让我们假设这不是罪魁祸首

添加新的子视图后,您可以尝试调用
[self.view bringsubview tofront:spinner]
,或者
[self.view insertSubview:lController.view belowSubview:spinner]
将视图放在微调器下面。您可能还希望将微调器上的
hidesWhenStopped
属性设置为
YES
,以便在停止时自动隐藏


另一件需要记住的事情是,加载和切换视图实际上可能不会花费那么长的时间,因此,如果事情发生得太快,微调器可能不会出现。

UIActivityIndicator在主线程上设置动画(动画帧随每次运行循环而变化)。如果启动、执行代码并停止,它将永远没有机会设置动画(因为它永远不会退出当前运行循环)


尝试在后台线程上运行代码。这将允许主线程处理动画帧。

UIActivityIndicator在主线程上制作动画(每个运行循环的动画帧都会更改)。如果启动、执行代码并停止,它将永远没有机会设置动画(因为它永远不会退出当前运行循环)

尝试在后台线程上运行代码。这将允许主线程处理动画帧