如何在 Xcode 6 的 XIB Interface Builder 中为 Mac 应用程序分配按钮

Posted

技术标签:

【中文标题】如何在 Xcode 6 的 XIB Interface Builder 中为 Mac 应用程序分配按钮【英文标题】:How to assign button in XIB Interface Builder in Xcode 6 for a Mac app 【发布时间】:2014-12-29 04:43:37 【问题描述】:

我正在尝试我的第一个 Mac 应用程序。我对 Objective-C 和 ios 游戏应用程序有一些经验,但之前从未使用过 XIB 文件或 Interface Builder。

我已经使用 XIB 创建了一个 MasterViewController 类,并且可以使用以下方法成功地让这个 XIB 从 AppDelegate 显示:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 

    self.masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
    [self.window.contentView addSubview:self.masterViewController.view];
    self.masterViewController.view.frame = ((NSView*)self.window.contentView).bounds;


屏幕上有一个 Label 和一个 Button,但我不知道如何连接 Button,以便在单击它时触发一个动作。

这里是 MasterViewController.h

#import <Cocoa/Cocoa.h>

@interface MasterViewController : NSViewController

-(IBAction)testMessage;
-(IBAction)testAction;

@end

这里是 MasterViewController.m

#import "MasterViewController.h"

@interface MasterViewController ()

@end

@implementation MasterViewController

- (void)viewDidLoad 
    [super viewDidLoad];


-(IBAction)testMessage 
    NSLog(@"testMessage");


-(IBAction)testAction 
    NSLog(@"testAction");

这是界面生成器的截图:

当我查看 File's Owner 部分时,我的 testAction 没有出现在列表中,因此我无法拖动关联。

我确定我只是遗漏了一些简单的东西,但是如何将 MyButton1 click 分配给我的 testMessage 操作?

我在 OSX 10.9.5 上使用 Xcode 6.1.1

谢谢

【问题讨论】:

【参考方案1】:

为了让您的 IBAction 触发,它必须如下所示:

- (IBAction)testAction:(id)sender 

您缺少 (id)sender 部分。

如果这不起作用,我还有一些解决方案。

【讨论】:

太棒了!我知道这很简单。当我添加发件人部分时,testAction 现在出现在 XIB 文件的所有者部分中,然后我可以从它拖动到按钮以连接它们。

以上是关于如何在 Xcode 6 的 XIB Interface Builder 中为 Mac 应用程序分配按钮的主要内容,如果未能解决你的问题,请参考以下文章

无法在 xCode 6 或更高版本中打开故事板或 xib 文件

将 XIB 从 Xcode 5 降级到 Xcode 4.6

Xcode 6.3.1 中没有 mainmenu.xib 文件

XCode 6.0.1 - xmlParseEntityRef:Launch Screen.xib 上没有名称

iOS7 iPhone 5 的 Xcode 6 LaunchScreen.xib 窗口大小错误

无法识别的选择器“isSpringLoaded”在 XCode 6.3 中发送到 Xib 中的 NSButton