xcode中的UIActivityIndi​​cator?

时间:2012-12-10 12:32:32

标签: iphone xcode uiactivityindicatorview

我正在尝试UIActivityIndi​​cator的概念。在firstView中我有一个tableView加载了数据和相应的配件。当一个tableViewCell的一个附件按钮被轻敲时,然后加载了DetailsView.Meanwhile我在添加一个activityIndi​​cator时轻触了配件按钮

- (void) tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    activityIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(143, 220, 37, 37)];
    activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
    activityIndicator.color = [UIColor blackColor];
    [self.view addSubview:activityIndicator];
   [activityIndicator startAnimating];
    activityIndicator.frame=CGRectMake(140, 195, 37, 37);


DetailsView *detailView= [[DetailsView alloc] initWithNibName:@"DetailsView" bundle:nil];
        detailView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
  UILabel *empid=(UILabel*)[cell viewWithTag:117];
        detailView.Id=[empid text];
        [self presentModalViewController: detailView animated:NO];
        [detailView release];
}

然后在DetailsView中根据它从firstView收到的empid加载一些数据

- (void)viewDidLoad
{
  activityIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(143, 220, 37, 37)];
    activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
    activityIndicator.color = [UIColor blackColor];
    [self.view addSubview:activityIndicator];
     activityIndicator.frame=CGRectMake(140, 195, 37, 37);
////loads data from service url and parsing is done

 [activityIndicator stopAnimating];
}

直到这里它才能完美运行..我在DetailsView中有一个后退按钮,每当按下时,presentmodalViewController都被解除。

-(IBAction)btnBack
{

  [self dismissModalViewControllerAnimated:NO];
}

但是现在的问题是我可以看到presentmodalViewController被解除但是当配件按钮被点击时开始动画的activityindicator仍然是动画。所以当presentView被解除时如何停止动画activityIndi​​cator并且仅显示prevoius视图的数据。 / p>

4 个答案:

答案 0 :(得分:0)

DetailsView方法的viewDidLoad类中的

只需添加activityIndi​​cator作为子视图并开始像下面的动画一样..

- (void)viewDidLoad
{
  activityIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(143, 220, 37, 37)];
    activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
    activityIndicator.color = [UIColor blackColor];
    [self.view addSubview:activityIndicator];
     activityIndicator.frame=CGRectMake(140, 195, 37, 37);

    [activityIndicator startAnimating];
}

还有stopAnimating当您的数据下载完成或失败时以及以下方法添加btnBack方法或viewWillDisappear时只需添加以下代码

[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];///Add this line if you want to remove from superview

答案 1 :(得分:0)

在第一个视图的ViewWillAppear方法中写下代码

[activityIndicator hidesWhenStopped];

告诉我它是否有效!!!

快乐编码!!!!

答案 2 :(得分:0)

使用以下代码

-   (void) tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath

  {

      detailView.Id=[empid text];

     [activityIndicator stopAnimating];

     [self presentModalViewController: detailView animated:NO];

       }

或在viewWillDisappear的FirstView

 {

 [activityIndicator stopAnimating];

 [activityIndicator removeFromSuperView];

}

答案 3 :(得分:-1)

第一个视图的viewWillAppear 中添加[activityIndicator stopAnimating];

 -(void)viewWillAppear:(BOOL)animated
{
  if (activityIndicator)
  {
     [activityIndicator stopAnimating];
  }
}