-1

UIActivityIndi​​catorの概念を試しています。firstViewには、データと対応するアクセサリボタンがロードされた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];
}

次に、firstViewから受け取ったempidに基づいてDetailsViewで、いくつかのデータをロードします

- (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が閉じられているのを見ることができますが、accessorybuttonがタップされたときにアニメーションを開始したactivityindicatorはまだアニメーション化されているので、presentViewが閉じられたときにそのアニメーション化activityIndi​​catorを停止し、prevoiusビューのデータのみを表示するにはどうすればよいですか?

4

4 に答える 4

0

DetailsViewクラスinメソッド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、データのダウンロードが完了または失敗した場合、および以下のメソッドでメソッドを追加するbtnBackviewWillDisappear、この以下のコードを追加するだけです。

[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];///Add this line if you want to remove from superview
于 2012-12-10T12:35:14.443 に答える
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 に答える
-1

最初のビューviewWillAppearで追加[activityIndicator stopAnimating];

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