0

我将一个动作拖到 ViewController.h 区域(这是我的 dayNight 按钮),如图所示:

//
//  ViewController.h
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

- (IBAction)dayNight:(id)sender;
- (IBAction)insulationClick:(id)sender;

现在我决定我希望它阅读:

- (IBAction)dayNightClick:(id)sender;

所以我手动重命名它,如上一行所示。我还在 ViewController.m 文件中将其重命名为:

- (IBAction)dayNight:(id)sender{}

到:

- (IBAction)dayNightClick:(id)sender{}

当我执行代码时,我一使用按钮就会出错。

如果我手动重命名它(没有点击这个词)它会再次工作。

为什么我不能手动修改代码行。还有另一个我必须重命名代码的位置吗?

错误是:

Thread1: signal SIGABRT

并指向 main.m 文件中的这一行代码:

int main(int argc, char *argv[])
{
@autoreleasepool 
{
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

我确信这是一个非常基本的问题。

4

3 回答 3

2

发生这种情况是因为您的故事板/笔尖仍然指向旧名称。nib 文件本质上只是后台的 XML 文件,因此您需要做的是打开您的 nib/storyboard 转到显示所有引用的检查器。您会发现您对 IBAction 的旧引用仍然存在。通过点击小十字将其删除并再次将其拖入 ViewController 并将其与您重命名为的函数连接起来。

如果您在头文件中更改方法签名,请始终记住更新情节提要 + .m :)

于 2012-08-12T11:03:55.637 回答
1

我发现如下:

  • 转到故事板(即您可以看到您的 idevice 的 GUI 表示的视图)
  • 单击您要重命名的按钮(我们将删除它)
  • 单击名为“显示连接检查器”的按钮(位于 xcode 的右上角附近,看起来像一个黑色圆圈中的右箭头)。
  • 有一个名为“已发送事件”的部分,您的按钮事件将在其周围绘制一个气泡,并带有指向带有您的 IBAction 名称的第二个气泡的链接。
  • 单击第二个气泡中的小十字 (x) 以删除事件链接。

现在您可以重新开始并将按钮重命名为您喜欢的任何名称。在我的示例中,我将其重命名为:

(IBAction)dayNight:(id)sender{} 

到:

(IBAction)dayNightClick:(id)sender{} 

所以这是通过删除对按钮的所有引用并重新创建它来重命名。请注意其他两个要删除它的地方是:

  • 在 *.h 文件中,例如我删除了这一行:

    (IBAction)dayNight:(id)sender{}

在 *.m 文件中,例如我删除了以下代码:

(IBAction)dayNight:(id)sender{} 
{
    // code in here
}
于 2012-09-17T04:07:11.650 回答
0

是的。该按钮有一个关联的目标/选择器,当它被按下时它会调用它。查找包含以下内容的行:

[button addTarget:self action:@selector(dayNight:) forControlEvents:UIControlEventTouchUpInside];

并在此处更改选择器。

于 2012-08-12T11:15:31.363 回答