【问题标题】:How to assign button in XIB Interface Builder in Xcode 6 for a Mac app如何在 Xcode 6 的 XIB Interface Builder 中为 Mac 应用程序分配按钮
【发布时间】: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

谢谢

【问题讨论】:

    标签: xcode macos interface-builder xcode6 xib


    【解决方案1】:

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

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

    您缺少 (id)sender 部分。

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

    【讨论】:

    • 太棒了!我知道这很简单。当我添加发件人部分时,testAction 现在出现在 XIB 文件的所有者部分中,然后我可以从它拖动到按钮以连接它们。
    猜你喜欢
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 2015-02-06
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多