Я новичок в программировании на Какао, и все еще не совсем понимаю, как все взаимосвязано.
Мне нужен довольно простое приложение, которое запускает одну команду (назовем его DoStuff
) всякий раз, когда щелкают любую точку в окне. После небольшого исследования похоже, что подкласс NSView
является правильным Мой файл ClickerView.m
имеет следующее:
- (void)mouseDown:(NSEvent *)theEvent {
NSLog(@"mouse down");
}
И я добавил вид в окно, и он растянулся на все, и правильно записывает в журнал каждый раз, когда окно
У меня также есть мой метод doStuff
на моем контроллере (я полагаю, его можно преобразовать в собственный класс, но пока он работает):
- (IBAction)doStuff:(id)sender {
// do stuff here
}
Итак, как мне получить mouseDown
в ClickerView
, чтобы иметь возможность вызывать DoStuff
в контроллере? У меня сильный backgrou для .NET nd и с этим, у меня было бы просто настраиваемое событие в ClickerView, которое будет использовать Контроллер; Я просто не знаю, как это сделать в Какао.
редактировать на основе совета Джошуа Ноцци
Я добавил IBOutlet
в свой View (и изменил его на подкласс NSControl
]):
@interface ClickerView : NSControl {
IBOutlet BoothController *controller;
}
@end
Я подключил к нему свой контроллер, щелкнув и перетащив элемент контроллер
на панели «Выходы» в обзоре на контроллер. Мой метод mouseDown
теперь выглядит так:
- (void)mouseDown:(NSEvent *)theEvent {
NSLog(@"mouse down");
[controller start:self];
}
Но контроллер не создается, отладчик перечисляет его как 0x0, и сообщение не отправляется.