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

您实际上已经声明了一个名为alertView::not的方法alertView:didDismissWithButtonIndex:,因为您没有UIAlertView为该方法的参数提供名称。这在我构建它时产生了编译器警告,即:

“'didDismissWithButtonIndex' 用作前一个参数的名称,而不是作为选择器的一部分”。

您需要UIAlertView在委托方法中为您的参数提供一个名称。将其定义的开头更改为以下内容:

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