0

テーブルビューがあり、ユーザーが行を押すたびに、別のクラスビューが表示されます。そのため、トランジションの間にローディング インジケーターが必要でした。MBProgressHUD を使用していますが、行を押しても何も表示されませんでした。@selector() の中に何を入れる必要がありますか?

[loading showWhileExecuting:@selector() onTarget:self withObject:[NSNumber numberWithInt:i] animation: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];
      }

}
4

2 に答える 2

0

セレクターに関するCocoaドキュメントの章をご覧ください。

セレクターは、単に関数へのポインターとして見ることができます。

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

  • したがって、whateverという名前の専用メソッドを作成することから始めます(ここではdoTheJob)

    - (void) doTheJob;
    
  • そうは言っても、MBProgressHUDを使用すると、showWhileExecutingメソッドを使用して、進行状況情報によって処理される作業メソッドを簡単に指定できます。そして、セレクターは、ターゲットワーカーメソッドを定義するためにここにあります。

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

  • withObjectは、セレクターメソッドに提供する/提供する必要のあるパラメーターです。ターゲットメソッドにパラメーターを指定する必要がある場合は、@ selector(doTheJob:)のように末尾のコロンを使用してセレクター定義を拡張する必要があることに注意してください。

お役に立てれば。

于 2011-08-03T06:12:12.073 に答える
0

コントロールがそのメソッドから戻ったときに HUD が画面から非表示/非表示になるように、待機関数を実装する必要があります。つまり、基本的には HUD が画面に表示されているときに行うことです。何らかの処理を行ったり、http 要求などの応答を待機したりする場合があります。タイマーにすることもできます。

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

    }
}

また、実装する必要があります

- (void) hudWasHidden
{
    [HUD removeFromSuperview];
    [HUD release];
}
于 2011-08-03T06:08:48.277 に答える