错误:“'UIAlertView'没有可见的@interface'声明选择器'initWithTitle'

时间:2013-01-18 02:29:50

标签: ios objective-c cocoa-touch

我正在阅读O'Reilly的书“学习可可与Objective-C第3版”。

O'Reilly网站没有这本特定书籍的论坛,搜索此错误不会返回任何内容。

在第18页,我不断收到以下错误:

"No visible @interface for 'UIAlertView' declares the selector 'initWithTitle:message:deluge:cancelButtonTitle:otherButton'"

这是我的代码:

//
//  ViewController.m
//  HelloCocoa
//
//  Created by ME on 1/14/13.
//  Copyright (c) 2013 ME. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)showAlert:(id)sender
{
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Hello!"
                                                    message:@"Hello, World!"
                                                   delegate:nil
                                          cancelButtonTitle:@"Close"
                                           otherButtonTitle:nil];
    [alert show];
    [_helloButton setTitle:@"I was Clicked!" forState:UIControlStateNormal];
}
@end



//
//  ViewController.h
//  HelloCocoa
//
//  Created by ME on 1/14/13.
//  Copyright (c) 2013 Andrew DiNatale. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIView *helloButton;
- (IBAction)showAlert:(id)sender;
@end

导致此错误的原因是什么?

3 个答案:

答案 0 :(得分:4)

otherButtonTitles参数是复数(如otherButtonTitle*s*)。

答案 1 :(得分:0)

UIAlertView是一个UIKit(iOS)类。看起来你正试图在Cocoa项目中使用它,而不是Cocoa Touch。

答案 2 :(得分:0)

我是本书的作者之一。

这个问题已经得到了正确回答,但我只是想插入 - 来自CodaFi的答案是正确的,问题是该方法以“otherButtonTitles”(带有s)结束,而不是“otherButtonTitle”。

我只是仔细检查了这本书的第18页,实际上这本书看起来是正确的!

如果您对这本书有任何其他疑问,请在此处发布 - 我会四处寻找,寻找提及该书的任何问题。我们随时欢迎勘误表!