2010-11-30 3 views
0

は、私は複数のUIAlertViewを使用してMとalertviewでクリックされた間、私はこの方法は、どのように私は私文献1】で

- (void) alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex{ 

}

しかし、私を使用するかを決定するためにUIAlertViewのボタンが複数のalertviewからクリックされた区別することができます1つのalertviewだけが必要ですが、すべてのalertviewsに応答していました。 1つのalertviewだけに制限する方法またはボタンアクションを決定する必要があることを警告するメッセージ

答えて

3

一般的に、UIAlertViewtagプロパティに一意の番号を使用し、デリゲートコールバックのタグを確認します。これを行うための簡単な方法は、列挙型である:

enum { 
    kServiceErrorAlert = 1, 
    kFailedToSaveAlert = 2 
}; 

... 

alertView.tag = kServiceErrorAlert; 
[alertView show]; 
2

あなただけの4.x上で実行するために余裕があれば、あなたはブロックを使用すると、デリゲートとタグを忘れることができます。

LambdaAlert *alert = [[LambdaAlert alloc] 
    initWithTitle:@"Test Alert" 
    message:@"See if the thing works."]; 
[alert addButtonWithTitle:@"Foo" block:^{ NSLog(@"Foo"); }]; 
[alert addButtonWithTitle:@"Bar" block:^{ NSLog(@"Bar"); }]; 
[alert addButtonWithTitle:@"Cancel" block:NULL]; 
[alert show]; 
[alert release]; 

を参照してくださいLambdaAlert on GitHub

+0

iPhoneの時代iOS 4.xは時代遅れです:)すばらしい答え –