Реализация 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.