我有一个非常简单的viewController问题。
我有一个带有2个按钮的主视图,在按下按钮时我想加载一个新的视图控制器(一个表格视图)。
我用它的nib文件创建了一个新的viewController。
创建了一个这样的IBAction,我将按钮链接到IB:
- (IBAction)displayVin {
UIViewController *vinController = [[UIViewController alloc] initWithNibName:@"vinController" bundle:nil];
[self.navigationController pushViewController:vinController animated:YES];
[vinController release];
}
它没有做任何事情因此我必须忘记一些事情,但是什么?我应该在其他地方声明这个newViewController吗?它正在编译并执行正常,没有错误消息。
更新
我现在正在使用它:
- (IBAction)displayVin:(id)sender {
NSLog(@"here");
UIViewController *vinController = [[UIViewController alloc] initWithNibName:@"vinController" bundle:nil];
[self.navigationController pushViewController:vinController animated:YES];
[vinController release];
}
但是当我按下按钮时,它会因此错误而崩溃:
[displayVin]:无法识别的选择器发送到实例0x8d03000 * *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [displayVin]:无法识别的选择器发送到实例0x8d03000'*
我应该在其他地方宣布某些内容,还是“应该”那段代码就足够了?
答案 0 :(得分:0)
首先使用NSLog()来确定你是否真的在displayVin()例程中。按钮事件会向acion发送一个参数,因此您应该将其声明为-(IBAction)displayVin:(id)sender
,而不仅仅是-(IBAction)displayVin
。
答案 1 :(得分:0)
对于更新的代码,您可能必须重新连接IB文件中的IBOutlet。看起来它仍在调用[viewController displayVin]方法(不带参数),而不是[viewController displayVin:]