web-dev-qa-db-ja.com

プログラムでUIAlertViewを閉じる

プログラムでUIAlertViewを閉じるのに助けが必要です。現在私はこれを持っています

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

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

[alert1 dismissWithClickedButtonIndex:0 animated:NO];

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

13
Nick P

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];
}

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

35
Arun

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

[alert dismissWithClickedButtonIndex:0 animated:NO];

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

[alert dismissWithClickedButtonIndex:0 animated:YES];

多分それはAppleバグ...

5
Eugenio

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

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
    }
}
3
Mil0R3

呼び出したメソッドは正しいです。
メソッドdismissWithClickedButtonIndex:animated:を呼び出すと、alert1はnilになると思います。
変数alert1を確認してみてください。

0
user1203650

代わりにデリゲートメソッドを使用できます-alertView:didDismissWithButtonIndex:代わりに、アラートビューが画面から削除されると呼び出されます、ORより良いアプローチは、背景を使用することですスレッド、たとえば-performSelectorInBackground:withObject:を使用して、実行する必要のある処理を処理します。

0
Wolverine