Реализация Target - шаблон действия в пользовательском представлении

Я создал собственный вид, который наследуется от NSView. Моя цель состоит в том, чтобы уведомить мой NSWindowControl, который связан с окном, которое содержит настраиваемое представление, когда пользователь нажимает настраиваемое представление.

Я хотел бы реализовать это, используя шаблон Action - Target, как NSButton. Так что я смогу связать пользовательский вид с действием в контроллере окна, используя Interface Builder.

1 ответ

Добавьте следующее в свой заголовочный файл пользовательского представления:

@interface MyCustomView : NSView

@property (weak, nonatomic) id userClickedTarget;
@property (assign, nonatomic) SEL userClickedAction;

@end

Синтезируйте getter/setter в файле реализации настраиваемого представления (это на самом деле необязательно в последних версиях Xcode/clang):

@synthesize userClickedTarget = _userClickedTarget;
@synthesize userClickedAction = _userClickedAction;

и вызвать цель / действие в вашем коде:

if (_userClickedTarget && _userClickedAction) {
    [_userClickedTarget performSelector:_userClickedAction
                             withObject:self
                             afterDelay:0.0];
}

Обратите внимание, что с помощью performSelector:withObject:afterDelay отделяет вызов от вашего кода представления и запускает его при следующей обработке runloop.

Другие вопросы по тегам