2011-02-27 41 views
0

我有一个非常简单的viewController问题。Touchupinside和简单的viewController问题

我有一个2按钮的主视图,一个按钮的touchupinside我想加载一个新的视图控制器(一个表视图)。

我用它的nib文件创建了一个新的viewController。

创建这样一个IBAction为,我已经在IB链接按钮:

- (IBAction)displayVin { 

    UIViewController *vinController = [[UIViewController alloc] initWithNibName:@"vinController" bundle:nil]; 
    [self.navigationController pushViewController:vinController animated:YES]; 
    [vinController release]; 

} 

它没有做任何事情,因此我必须忘了什么东西,但什么?我应该在其他地方声明这个newViewController吗?它的编译和执行没有错误信息。

UPDATE:

现在,我使用这个:

- (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]:无法识别的se发送给实例0x8d03000'*

我应该在其他地方声明一些东西,或者“应该”那段代码就够了吗?

回答

0

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

+0

我在displayVin方法中,它打印出来很好,谢谢你的提示。我添加了(id)sender,现在在头文件和实现文件中使用 - (IBAction)displayVin:(id)sender,它现在崩溃了(我猜这是件好事,至少它正在注册),登录更新后的问题 – 2011-02-27 05:23:02

0

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

+0

不错,不会崩溃了!谢谢 。它仍然正确地打印NSlog,确定没有做任何其他事情,例如移动视图,但至少它不会崩溃:) – 2011-02-27 12:38:12

+0

再次阅读您的代码后:检查您是否真的使用navigationController。如果你没有,self.navigationController将不会被设置,并且pushModalViewController将不会执行任何操作。假设IBAction方法在viewController中,用[self pushModalViewController:vinController animated:YES]替换该调用;应该工作... – 2011-02-27 21:45:31

+0

谢谢你,我已经取代只是“自我”而不是“self.navigationController”,但现在它抱怨如此:“警告:'VinsViewController'可能不会响应'-pushViewController:动画:'” – 2011-02-28 09:21:43