2011-08-03 8 views
0

テーブルビューがあり、ユーザーが行を押すたびに別のクラスビューが表示されます。だから私は移行の間にローディングインジケータを持っていたかったのです。 MBProgressHUDを使用していますが、行を押したときに何も表示されませんでした。そして、私は@selector()の中に何を置くべきですか?MBProgressHUDアクティビティインジケータの使用

[読み上げshowWhileExecuting:@selector()onTarget:self withObject:[NSNumber numberWithInt:i] animated:YES];

ここに私のコードです。

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

loading = [[MBProgressHUD alloc] initWithView:self.view]; 

[self.view addSubview:loading]; 

loading.delegate = self; 

loading.labelText = @"Loading Events, Please Wait.."; 

[loading showWhileExecuting:@selector(//what should I put) onTarget:self withObject:nil animated:YES]; 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 


    if ([[self.citiesArray objectAtIndex:indexPath.row] isEqual:@"NEW YORK"]) 
    { 
      self.newYorkViewController = [[NewYorkViewController alloc] initWithNibName:@"NewYorkViewController" bundle:nil]; 
       Twangoo_AppAppDelegate *delegate = (Twangoo_AppAppDelegate*)[[UIApplication sharedApplication] delegate]; 
      [delegate.citiesNavController pushViewController:self.newYorkViewController animated:YES]; 
     } 

} 

答えて

0

コントロールがそのメソッドから復帰したときに、HUDが画面から隠れる/消えるように、待機関数を実装する必要があります。したがって、HUDが画面に表示されているときの基本的な処理は、httpリクエストなどの処理や応答待ちの可能性があります。これはタイマーでもかまいません。

- (void)waitForResponse 
{ 
    while (/*Some condition is not met*/) 
    { 

    } 
} 

はまた、あなたはあなたが単に関数へのポインタとして見ることができCocoa documentation chapter on selectors

セレクタに見ているかもしれません

- (void) hudWasHidden 
{ 
    [HUD removeFromSuperview]; 
    [HUD release]; 
} 
+0

ありがとうございますが、私は待っている関数は、MBProgressHUDであるdidSelectRowAtIndexPathだと思います。 – kevin

+0

いいえ、HUDが表示されている間、HUDが画面から削除されてから戻ると、待機機能が実行されます。 –

+0

私はちょうど待っている方法で(真){}(継続的にループ)していると思います。プッシュ・サブビュー・コールの後にhudWasHiddenを配置します。 – kevin

0

を実装する必要があります。

次に、特定のプロセスが実行されている間に進捗状況を表示しようとしていると思います。この特定のプロセスは、論理的には専用のメソッド(doTheJobと呼ぶ)で分離する必要があります。

  • のでMBProgressHUDは、あなたは、単に使用して進捗情報によって処理されなければならない作業方法を指定することができます言われていること

    - (void) doTheJob; 
    
  • 何でも(ここではdoTheJob)という名前の専用のメソッドを作成することから始めshowWhileExecutingメソッド。セレクタはターゲットワーカーメソッドを定義するためのものです。

    [loading showWhileExecuting:@selector(doTheJob) onTarget:self withObject:nil animated:YES]; 
    
  • ターゲットはセレクタを定義するオブジェクト参照です。シンプルなままにするために、現在のクラスでメソッドdoTheJobを定義すると、self as targetを使用します。

  • とwithObjectは、セレクタメソッドに提供したい/必要とするパラメータです。あなたがターゲットメソッドにパラメータを提供する必要がある場合、あなたは@selectorとして末尾にコロン(:) doTheJobこのことができます

希望をセレクタの定義を拡張する必要があることに注意してください。

+0

ありがとう、私は自己を置くべきdotheJob内に置くべきですか?newYorkViewController = [[NewYorkViewController alloc] initWithNibName:@ "NewYorkViewController"バンドル:nil]; Twangoo_AppAppDelegate * delegate =(Twangoo_AppAppDelegate *)[[UIApplication sharedApplication] delegate]; [delegate.citiesNavController pushViewController:self.newYorkViewController animated:YES]; – kevin

+0

これがHUDの表示中に実行したいコードであれば、私はYes(最初のサンプルのようです)と言っていますが、ifステートメントとdeselectステートメントも含めることを忘れないでください。 ifステートメントを最初に実行してから、showWhileLoadingメソッドを呼び出すこともできます。これは、正しいセルにあるかどうかを確認した後で、達成しようとしている内容によって異なります。 幸いです。 –

関連する問題