为了访问按钮中的 -mouseUp 和 -mouseDown 事件,我将 NSButton 子类化,并且我还想在对象中存储一些额外的变量:
@interface MoveButton : NSButton{
unsigned char cmd[3];
unsigned char stop[3];
int r;
struct libusb_device_handle *devh;
}
-(void)mouseDown:(NSEvent *)theEvent;
-(void)mouseUp:(NSEvent *)theEvent;
-(void) setcommand:(char*)first:(char*)second:(char*)third (libusb_device_handle*)device_handle;
-(void) setLight: (char*) light;
@end
在我的窗口控制器中,我有许多子类实例,每个实例都通过 IBOutlet 连接到 Interface Builder 中的一个元素。
@interface MainWindowController(){
IBOutlet MoveButton * base_cw;
IBOutlet MoveButton * base_ccw;
@end
在 initWithWindow 函数中,每个按钮都被初始化:
base_cw = [[MoveButton alloc] init];
base_ccw = [[MoveButton alloc] init];
[base_cw setcommand:"00" :"00" :"00":devh];
[base_ccw setcommand:"00" :"00" :"00":devh];
在界面生成器中,我已将每个按钮的类属性更改为 MoveButton 并将其连接到正确的 IBOutlet。但是,当实际单击按钮时,会引发 UI 错误,因为它尝试使用的实例变量为空。是我没有将代码内对象与 UI 元素正确连接,还是我只是以错误的方式进行操作?