【发布时间】:2014-12-25 01:57:06
【问题描述】:
我有一个创建按钮实例的函数,我希望回调转到一个单独的函数。这不起作用(没有错误或任何事情,当我单击按钮时什么也没有发生)。我需要它是一个 C 函数,因为我正在与 Golang 交互(使用 cgo)。
void Start(void){
...
NSRect buttonFrame = NSMakeRect(59, 33, 82, 32);
NSButton *button = [[NSButton alloc] initWithFrame:buttonFrame];
[button setAction:@selector(ButtonClick:)];
...
}
void ButtonClick(void){
NSLog(@"Button clicked!");
}
【问题讨论】:
-
只是一个想法:尝试在 sn-p 的第 5 行上方添加
[button setTarget:self];。 -
未声明的标识符
self。我在这里写的内容显示了一切,减去制作窗口等并运行它(在Start内完成)。 -
您不能为此使用函数。按钮必须有一个作为对象的目标,在该目标上可以使用具有适当名称的方法。
-
这不是 C 文件;您正在发送消息(方括号语法),因此您必须编译为 ObjC。
-
如果您需要在单击按钮时调用 C 函数,因为您想桥接到 Golang,您必须让按钮调用一个方法,然后该方法调用 C 函数。
标签: objective-c cocoa nsbutton target-action