Как подкласс NSView взаимодействует с контроллером?

Я новичок в программировании на Какао, и все еще не совсем понимаю, как все взаимосвязано.

Мне нужен довольно простое приложение, которое запускает одну команду (назовем его 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, и сообщение не отправляется.

9
задан swilliams 31 July 2011 в 21:54
поделиться