0

私はtableview応答を持っていdetialviewます。にはdetailview、URL から読み込まれた画像とラベルがいくつかあります。セルにa を追加しUIActivityindicatorviewて、ロード中であることを示しようとしています。私はそれを処理しましたが、遅くまで表示され、に戻っても消えませんtableview。簡単な解決策を見つけるためにいろいろ調べましたが、失敗しました...

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {

ReaDetailViewController *reaDetail = [[ReaDetailViewController alloc] initWithNibName:@"ReaDetailViewController" bundle:nil];

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

UIActivityIndicatorView *activityView = 
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[activityView startAnimating];
[cell setAccessoryView:activityView];
[activityView release];

[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];

    { 
    reaDetail.petImageString = [[NSString alloc] initWithString:[[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"image"]]; 

    reaDetail.petLabelString = [[NSString alloc] initWithString:[[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"description"]]; 

    reaDetail.petLabelString1 = [[NSString alloc] initWithString:[[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"description1"]]; 

    reaDetail.petLabelString2 = [[NSString alloc] initWithString:[[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"description2"]]; 





    reaDetail.title = [[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"name"]; 
}


// Pass the selected object to the new view controller.
[self.navigationController pushViewController:reaDetail animated:YES];
[reaDetail release];


   }

どんな助けでもとても役に立ちます!

4

1 に答える 1

0

ビュー コントローラーをロードしている間、アクティビティ ビューをアニメーション化したいとのご要望を承りました。問題は、この選択方法から戻るまで、アクティビティ ビューのアニメーションが開始されないことです。これは、コントローラーをプッシュする準備が整う頃です。

2つのオプション:

  • メソッドをできるだけ早く終了してperfomSelector:onMainThread、ビュー コントローラーの初期化ステップを実行するように呼び出して、プッシュすることができます。
  • または、ビュー コントローラーをできるだけ早くプッシュし、このコントローラーのviewDidLoadまたはviewWillAppearメソッドでその初期化プロセスを実行します (この新しいビューにアクティビティ コントローラーを追加できます)。

最初のオプションを選択した場合はdeselectRowAtIndexPath、新しいビュー コントローラーをプッシュした後にメソッドを呼び出しstopAnimating、このメソッドからインジケーター ビューを呼び出す必要がありますdeselectRowAtIndexPath

于 2011-11-23T22:21:44.010 に答える