如何在 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 文件
Xcode 6.3.1 中没有 mainmenu.xib 文件
XCode 6.0.1 - xmlParseEntityRef:Launch Screen.xib 上没有名称