-1

我正在尝试 UIActivityIndi​​cator 的概念。在第一个视图中,我有一个 tableView 加载了数据和相应的附件按钮。因此,当点击 tableViewCell 的附件按钮时,将加载 DetailsView。同时,我在点击附件按钮时添加了一个 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 视图的数据。

4

4 回答 4

0

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

[activityIndicator hidesWhenStopped];

告诉我它是否有效!

编码快乐!!!!

于 2012-12-10T12:41:29.900 回答
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];

}

于 2012-12-10T12:48:13.310 回答
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
于 2012-12-10T12:35:14.443 回答
-1

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

 -(void)viewWillAppear:(BOOL)animated
{
  if (activityIndicator)
  {
     [activityIndicator stopAnimating];
  }
}
于 2012-12-10T12:37:58.983 回答