13

プログラムで UIAlertView を閉じる方法を教えてください。現在、私はこれを持っています

UIAlertView *alert1 = [[UIAlertView alloc]initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];

その後、これを呼び出します

[alert1 dismissWithClickedButtonIndex:0 animated:NO];

しかし、何も起こりません。

4

5 に答える 5

35

2 つのことを設定する必要があります。

1. .h ファイルを含めます。 <UIAlertViewDelegate>

2.以下の実装に従ってください...

   UIAlertView *alert1 = [[UIAlertView alloc]initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil]; 
        [alert1 show];
        [self performSelector:@selector(dismiss:) withObject:alert1 afterDelay:1.0];

却下方法は...

-(void)dismiss:(UIAlertView*)alert
{
    [alert dismissWithClickedButtonIndex:0 animated:YES];
}

これがお役に立てば幸いです。

于 2012-09-14T06:15:17.500 に答える
5

私もこの問題に遭遇しました。私の場合、何らかの理由で次のように呼び出しています。

[alert dismissWithClickedButtonIndex:0 animated:NO];

常に機能するとは限りませんでした (はい、UI スレッドで呼び出しても、はい、アラート != nil)。代わりに、アニメーション フラグを YES に設定するだけで機能しました:

[alert dismissWithClickedButtonIndex:0 animated:YES];

多分それはAppleのバグです...

于 2015-07-22T09:22:38.750 に答える
3

最初に表示する必要があります。

UIAlertView *alert1 = [[UIAlertView alloc]initWithTitle:@"title" message:@"message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
    [alert1 show];

次にデリゲートメソッドで

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex{
    if(buttonIndex==0){
     // do something
    }
}
于 2012-09-14T01:06:38.130 に答える
0

デリゲート メソッド-alertView:didDismissWithButtonIndex:を代わりに使用できます — アラート ビューが画面から削除されると呼び出されます。または、必要な処理を処理するために-performSelectorInBackground:withObject:などのバックグラウンド スレッドを使用することをお勧めします。する。

于 2012-09-14T06:50:37.590 に答える
0

呼び出したメソッドは正しいです。 メソッドdismissWithClickedButtonIndex:animated: Try to check your variable alert1を
呼び出すと、alert1はnilだと思います 。

于 2012-09-14T01:11:44.217 に答える