为什么以下UIAlertView代码无法正常工作

时间:2014-08-29 21:50:24

标签: objective-c uialertview

我试图让以下工作,这个例子出现在几个网站上,但我似乎无法让它运作。

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Yes, like this" message:@"What are you looking at?" cancelButtonTitle:@"Leave me alone" otherButtonTitles:@"Button 1",@"Button 2",nil];
    [alert showWithDismissHandler:^(NSInteger selectedIndex, BOOL didCancel) {
        if (didCancel) {
            NSLog(@"User cancelled");
            return;
        }
        switch (selectedIndex) {
            case 1:
                NSLog(@"1 selected");
                break;
            case 2:
                NSLog(@"2 selected");
                break;
            default:
                break;
        }
    }];

我收到的警告是

对于' UIAlertView'没有可见的@interface;声明选择器' initWithTitle:message:cancelButtonTitle:otherButtonTitles:'

对于' UIAlertView'没有可见的@interface;声明选择器' showWithDismissHandler:'

正是一个非常愚蠢的问题,但我错过了什么。

由于

3 个答案:

答案 0 :(得分:4)

签名不正确。你错过了代表。

– initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:

标准UIAlertView没有showWithDismissHandler方法。如果您从互联网上复制了一些代码,可能需要下载一些支持UIAlertView {@ 1}}回调的第三方软件包(其中包含很多代码)。

答案 1 :(得分:1)

是的,彼得是对的!第一个警告是因为签名不正确:

– initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:

您在此处尝试执行的操作是在使用alertview is dismissedmethod is not available时执行某些操作。实施UIAlertViewDelegate,然后使用这些方法中的任何一种来完成您在此处尝试的操作。

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex

这是指UIAlertView委托参考的链接:

http://developer.apple.com/library/ios/documentation/uikit/reference/UIAlertViewDelegate_Protocol/UIAlertViewDelegate/UIAlertViewDelegate.html

答案 2 :(得分:0)

您是否正在使用类似UBAlertView的内容?如果是这样,您需要实例化UBAlertView,而不是UIAlertView

UBAlertView *alert = [[UBAlertView alloc] initWithTitle:@"Yes, like this"
                                                message:@"What are you looking at?"
                                      cancelButtonTitle:@"Leave me alone"
                                      otherButtonTitles:@"Button 1",@"Button 2",nil];
[alert showWithDismissHandler:^(NSInteger selectedIndex, BOOL didCancel) {
    ... etc ...

(我喜欢在长方法调用中添加换行符以使它们更具可读性。)