2010-07-09 58 views
0

我遇到了一个问题,当我从某个视图控制器调用某个视图控制器的IBaction时,该应用程序崩溃,但我可以在其他地方获得所需的结果。从xib中点击按钮调用IBAction时出现错误

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

当应用程序第一次加载时,菜单栏中会出现一个“x”按钮,它将拉动地址簿选取器。这工作正常。如果你点击菜单栏中的“新建”按钮,propper视图就会被创建并推送到堆栈上。这个新视图有1个名为“sellect bill to”的按钮,它只在IBAction调用中有一个日志语句,但仍然导致崩溃。 “选择账单到”按钮的IBAction是该视图视图控制器中的位置。

任何帮助解开这将不胜感激。

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

回答

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,因为它是一个控制器,而不是视图。

+0

非常感谢! – swnsn 2010-07-09 18:47:02

0

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

A.

我检查调试器控制台和下面的错误是 'NSInvalidArgumentException' 的,理由是: '*** - [UIViewController中pickBillTo:]:无法识别的选择发送到实例0x44487f0' 我不敢肯定问题是什么。

B.

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

C.

你还没有为 按钮来释放内存,名字,姓氏,人数

+0

你可以称它为发件人,选择器,myVar。这就是你如何访问方法内部的选择器。不担心释放这些股票,因为我没有使用它们,并挂上了这个问题。谢谢你的回应。 – swnsn 2010-07-09 03:55:36