我在视图中有一个拒绝工作的按钮。我已经从X-Code中使用了一个空白的默认视图应用程序,但是在我的应用程序中它都不会起作用,相反它会给我以下错误。
因未捕获而终止应用 例外 'NSInvalidArgumentException',原因: '*** - [UIViewController showVicInfo:]: 无法识别的选择器发送到实例 0x3c084f0'
调试器也没有任何帮助。我已经确保我将按钮连接到文件的所有者(而不是相反)。以下是该操作的代码。我知道这不是警报视图,因为断点甚至没有到达那里。
about.h
@interface about : UIViewController {
}
-(IBAction)showVicInfo:(id)sender;
about.m
-(IBAction)showVicInfo:(id)sender {
UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"You require an internet connection via WiFi or cellular network for iFirelert to work." delegate:self cancelButtonTitle:@"OK, thanks" otherButtonTitles:nil];
[myAlert show];
[myAlert release];
}
更新:仅供参考我是如何创建按钮的,如果有帮助的话。
然后在X-Code中构建并运行失败。
更新2:好的,我已经知道它必须是我现有项目中的设置或其他东西。我复制了两个类文件和XIB文件,它在另一个X-Code项目中工作,但按钮也是在现有应用程序中抛出相同的错误。
答案 0 :(得分:2)
有同样的错误。问题是我发布了viewController。
AnswerStructureViewController* questionVC = [[AnswerStructureViewController alloc] initWithOpts:dict];
[window addSubview:questionVC.view];
[questionVC release];
如果你不释放它,一切都很好
答案 1 :(得分:1)
我认为Squeegy是对的,你的VC是一个普通的旧UIViewController并且不接受showVicInfo。
您是否在IB中为ViewController设置了类(command-4)?
或者如果你自己分配,你是这样做的吗?
vc = [UIViewController alloc]; // wrong class
当你应该这样做时:
vc = [about alloc];
错误消息告诉您showVicInfo正被发送到0x3c084f0。检查您创建的视图控制器的地址(如上面“vc”中的值),如果它是您的答案的0x3c084f0。当然,下次的值可能会有所不同,但NSLog会在您创建它时将其与错误消息进行比较,以确定它所指的是什么。
还要检查IB中的按钮是否正确连接。如果选择按钮并转到“按钮连接”选项卡,则应该有连接。对于Touch Up Inside应连接到您的动作功能,在您的IB中它应该连接到showVicInfo: