Touchupinside和简单的viewController问题

时间:2011-02-27 03:45:58

标签: objective-c ios ios4

我有一个非常简单的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'*

我应该在其他地方宣布某些内容,还是“应该”那段代码就足够了?

2 个答案:

答案 0 :(得分:0)

首先使用NSLog()来确定你是否真的在displayVin()例程中。按钮事件会向acion发送一个参数,因此您应该将其声明为-(IBAction)displayVin:(id)sender,而不仅仅是-(IBAction)displayVin

答案 1 :(得分:0)

对于更新的代码,您可能必须重新连接IB文件中的IBOutlet。看起来它仍在调用[viewController displayVin]方法(不带参数),而不是[viewController displayVin:]