2013-09-25 10 views
5

になります。 そしてここではコードです:UIAlertViewは、私がクラッシュを持っているプログラムがクラッシュ

[alert dismissWithClickedButtonIndex:0 animated:YES]; 
UIAlertView *noTicketAlert = [[UIAlertView alloc] initWithTitle:@"Aradığınız kriterlere uygun bilet bulunamadı!" message:nil delegate:self cancelButtonTitle:@"Tamam" otherButtonTitles: nil]; 
[noTicketAlert show]; 
+0

ケアとそれを解決しましたアラートビュー? –

+1

これはXcode 4とXcode 3でクラッシュしているはずです。 – trojanfoe

+2

エラーメッセージがはるかに明白であるとは思いません。 – trojanfoe

答えて

1

はい、私は解決策を見つけたと私はあなたたちとそれを共有しています。 dismissWithClickedButtonIndex関数をオーバーライドしようとしましたが、私のアラートごとに固有のbuttonIndexes を9999のように送信しました。 、

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
    [self viewWillDisappear:YES]; 
    if(buttonIndex == 9999) { 
     noTicketAlert = [[UIAlertView alloc] initWithTitle:@"Aradığınız kriterlere uygun bilet bulunamadı!" message:nil delegate:self cancelButtonTitle:@"Tamam" otherButtonTitles: nil]; 
     [noTicketAlert show]; 
    } 
} 

であると私はnoticketAlertを表示したい場合は、私は次のようにこのメソッドを呼び出す:あなたはカスタムボタンを持っている場合は、デリゲートメソッドを実装することを確認してください

[alert dismissWithClickedButtonIndex:9999 animated:YES]; 
0

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView 
{ 
    return YES; 
} 

このセレクタが見つからない場合、クラッシュを伴うプログラム。

8

通常、UIAlertViewを提示するときにこのエラーが発生します(面白いボタンオーバーライドのものはありません)。私はすぐに2回それを提示していたことが判明しました。私の場合の修正は、誤った重複通話を削除することでした。

同時に2つのアラートビューを同時に表示する必要があり、このエラーが発生した場合は、メインスレッドでコードを実行することで動作します(エラーメッセージ自体を解決します)。

[[NSOperationQueue mainQueue] addOperationWithBlock:^ 
    { 
    // Your code that presents the alert view(s) 
    }]; 
10

バックグラウンドスレッドからのアラートを表示しようとすると、このエラーが発生しました。このように修正:この問題に対するスウィフト2の答えをお探しの方に

dispatch_async(dispatch_get_main_queue(), ^{ 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:... 
    [alertView show]; 
}); 
0

、私は同様の問題に遭遇し、私たちのためにあなたのコードを表示する@Dave Battonのソリューション

dispatch_async(dispatch_get_main_queue(), { 
    self.performSegueWithIdentifier("loginSegue", sender: self) 
}) 
関連する問題