【问题标题】:Getting an error when calling an IBAction from a button click inside a xib从 xib 内的按钮单击调用 IBAction 时出错
【发布时间】:2010-07-09 02:21:00
【问题描述】:

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

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

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

如有任何帮助解决此问题,我们将不胜感激。

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

【问题讨论】:

    标签: iphone uiviewcontroller uinavigationcontroller ibaction


    【解决方案1】:

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

    在 FirstViewController.m 中,更改:

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

    到:

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

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

    【讨论】:

      【解决方案2】:

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

      一个。

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

      乙。

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

      C.

      你还没有释放内存 按钮、名字、姓氏、数字

      【讨论】:

      • 你可以称它为sender、selector、myVar。这就是您在方法内部访问选择器的方式。还不担心释放这些变量,因为我还没有使用它们并且被这个问题挂断了。不过感谢您的回复。
      猜你喜欢
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 1970-01-01
      相关资源
      最近更新 更多