Objective c Touchupinside和简单的viewController问题
我有一个非常简单的viewController问题 我有一个带有2个按钮的主视图,在触碰一个按钮的内部,我想加载一个新的视图控制器(一个表视图) 我已经用它的nib文件创建了一个新的viewController 创建了一个像这样的iAction,我将按钮链接到了IB中:Objective c Touchupinside和简单的viewController问题,objective-c,ios,ios4,Objective C,Ios,Ios4,我有一个非常简单的viewController问题 我有一个带有2个按钮的主视图,在触碰一个按钮的内部,我想加载一个新的视图控制器(一个表视图) 我已经用它的nib文件创建了一个新的viewController 创建了一个像这样的iAction,我将按钮链接到了IB中: - (IBAction)displayVin { UIViewController *vinController = [[UIViewController alloc] initWithNibName:@"vinCon
- (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];
}
但当我按下按钮时,它会因为这个错误而崩溃:
[显示VIN]:发送到实例0x8d03000的无法识别的选择器
**由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[displayVin]:无法识别的选择器已发送到实例0x8d03000'*
我应该在其他地方声明什么,还是“应该”这段代码就足够了?首先使用NSLog()确定您是否实际在displayVin()例程中。按钮事件向acion发送一个参数,因此您可能应该将其声明为
-(iAction)displayVin:(id)sender
,而不仅仅是-(iAction)displayVin
,对于更新的代码,您可能必须在IB文件中重新连接IBOutlet。看起来它仍然在调用[viewController displayVin]方法(没有参数),而不是[viewController displayVin:]我在displayVin方法中,它打印出来很好,谢谢提示。我已经添加了(id)sender,现在在头文件和实现文件中使用-(iAction)displayVin:(id)sender,它现在崩溃了(我想这是一件好事,至少它正在注册),登录更新的questionnice,不再崩溃了!谢谢它仍然正确地打印NSlog,没有做任何其他事情,例如移动视图,但至少没有崩溃:)再次阅读代码后:检查是否确实使用了navigationController。如果未设置,则不会设置self.navigationController,并且pushModalViewController不会执行任何操作。假设iAction方法位于viewController中,将该调用替换为[self-pushModalViewController:vinController-animated:YES];应该可以工作…感谢我用“self”而不是“self.navigationController”替换了它,但现在它的抱怨是这样的:“警告:'VinsViewController'可能不会响应'-pushViewController:动画:'”