IBAction不会在子视图中调用

时间:2011-03-16 16:34:37

标签: iphone ios exception subview ibaction

我正在创建一个简单的应用程序,让用户在点击按钮后查看电影。您看到的第一个屏幕是带有2个按钮的主菜单。其中一个将用户发送到子视图,我在IBAction方法中将其编码为:

ViewConroller *nextView = [[ViewController alloc] initWithNibName:@"NextMenu" bundle nil];
[self.view addSubview:[nextView view]];
[nextView release];

此部分很好,只是子视图在前一个视图的底部显示一个20 px的条形图。我环顾四周,this one之类的解决方案都不适合我。这甚至不是主要问题。在子视图中,每当我单击按钮时,应用程序都会爆炸。即使在方法内执行一行,IBAction方法也会中断。在goBack IBAction方法中,我试图忽略子视图并返回主菜单:

[self.view removeFromSuperview];

我的连接在我的XIB文件中是正确的,一切似乎都是有序的。按钮只是没有执行。我不确定它是否与添加子视图或什么有关。我在谷歌和这个网站上做了很多搜索,但我仍然找不到解决方案。

以下是我收到的错误示例:

Terminating app due to uncaught exception 'NSInvalidArgumentException, reason: '-[__NSCFType goBack:]: unrecognized selector sent to instance 0x5640b70'

希望你们能帮助我,这真是令人沮丧。我觉得我已经尝试了一切。谢谢你的时间。如果我需要提供更多信息,请告诉我。再次感谢。

1 个答案:

答案 0 :(得分:3)

ViewConroller *nextView = [[ViewController alloc] initWithNibName:@"NextMenu" bundle nil];

创建了视图控制器。

[self.view addSubview:[nextView view]];

self.viewnextView.view作为子视图的附加值并保留(N.B.它保留next.view值而不是nextView本身)

[nextView release];

nextView被释放并立即解除分配(因为它从未被任何人保留过)

按钮正在尝试向已解除分配的对象发送消息 - >行为是未定义的,在您的情况下,某些其他对象(或看起来像对象的东西)就在那里,并且它不理解goBack:的含义。

这就是为什么你不应该用你自己的导航发明轮子(特别是如果你是新手)。请改用UINavigationController