从xib内部的按钮单击调用IBAction时出错

时间:2010-07-09 02:21:01

标签: iphone uiviewcontroller uinavigationcontroller ibaction

我有一个问题,当我从某个视图控制器调用IBaction时,应用程序崩溃,但我可以在其他地方获得所需的结果。

基本上我有一个埋在标签栏控制器中的导航控制器。如果我从导航控制器的第一个视图调用IBActions它工作正常,但如果我用initWithNib创建一个视图并将其推送到navcontroller堆栈,然后尝试在viewcontroller的实例上调用IBAction我推堆叠应用程序崩溃。

当应用程序首次加载时,菜单栏中有一个“x”按钮,它会拉出一个地址簿选择器。这很好用。如果单击菜单栏中的“新建”按钮,则会创建propper视图并将其推送到堆栈中。这个新视图有一个名为“sellect bill to”的按钮,它只在IBAction调用中有一个日志语句,但仍会导致崩溃。 “选择账单到”按钮的IBAction是视图控制器中的位置。

任何解开这个的帮助都会受到赞赏。

来源可以在http://www.swnsn.com/S4X.zip

找到

2 个答案:

答案 0 :(得分:0)

我只是个初学者。所以我的建议可能不对。

一个。

我检查了Debugger控制台,出现以下错误 'NSInvalidArgumentException',原因:'*** - [UIViewController pickBillTo:]:无法识别的选择器发送到实例0x44487f0' 我不确定问题是什么。

-(IBAction)pickBillTo:(id) selector{ // Your code
-(IBAction)pickBillTo:(id) sender{ // my suggestion

下进行。

你还没有释放内存 button,firstName,lastName,number

答案 1 :(得分:0)

您正在尝试将pickBillTo:发送到UIViewController的实例,而不是您的自定义子类。

在FirstViewController.m中,更改:

UIViewController *newView = [[UIViewController alloc] initWithNibName:@"NewOrderView" bundle:nil];

为:

NewOrderView *newView = [[NewOrderView alloc] initWithNibName:@"NewOrderView" bundle:nil];

你还必须导入NewOrderView.h,你应该将该类重命名为NewOrderViewController,并将变量命名为newViewController,因为它是一个控制器,而不是一个视图。