0

UIAlertView の却下イベントを処理しようとしています。ただし、 didDismissWithButtonIndex が呼び出されることはありません。以下は、アラートを生成するシングルトン クラスのコードです。誰かが私が間違ったことを見つけることができますか?

MySingleton.h

@interface BMAppUser : NSObject <UIAlertViewDelegate> {

}

+ (id)sharedInstance;

MySingleton.m

+ (id) sharedInstance {
    static BMAppUser *sharedInstance = nil;
    @synchronized(self) {
        if (sharedInstance==nil) {
            sharedInstance = [[super allocWithZone:NULL] init];
        }
    }
    return sharedInstance;
}

-(void)promptToSetLanguagePreferences {
// Create a new alert object and set initial values.
NSString *message = [NSString stringWithFormat:@"Please set your language preference settings.  Click OK to go there now."];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Language Preferences Not Set"
                                                message:message
                                               delegate:self
                                      cancelButtonTitle:@"Cancel"
                                      otherButtonTitles:@"OK", nil];
// Display the alert to the user
[alert show];
}

-(void)alertView:(UIAlertView *)didDismissWithButtonIndex:(NSInteger)buttonIndex {
    NSLog(@"THIS METHOD NEVER GETS CALLED!!!!!!!");
    if(buttonIndex==0){
        NSLog(@"userclickedCancel");
    }
    if(buttonIndex==1){
        NSLog(@"userclickedOK");
    }
}
4

1 に答える 1

1

そのメソッドにパラメーターの名前を指定しなかったため、notalertView::という名前のメソッドを実際に宣言しました。これにより、ビルド時にコンパイラの警告が生成されました。alertView:didDismissWithButtonIndex:UIAlertView

「'didDismissWithButtonIndex' は、セレクターの一部としてではなく、前のパラメーターの名前として使用されます」.

UIAlertViewデリゲート メソッドでパラメーターの名前を指定する必要があります。その定義の冒頭を次のように変更します。

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
于 2013-08-18T01:18:51.617 に答える