1
我已經創建了一個自定義視圖,它繼承自NSView。 我的目標是在用戶點擊自定義視圖時,通知與包含自定義視圖的窗口關聯的NSWindowControl。實現目標 - 自定義視圖中的操作模式
我想實現這個使用Action - Target模式,就像NSButton一樣。 這樣我就可以使用Interface Builder將窗口控制器中的操作連接到自定義視圖。
我已經創建了一個自定義視圖,它繼承自NSView。 我的目標是在用戶點擊自定義視圖時,通知與包含自定義視圖的窗口關聯的NSWindowControl。實現目標 - 自定義視圖中的操作模式
我想實現這個使用Action - Target模式,就像NSButton一樣。 這樣我就可以使用Interface Builder將窗口控制器中的操作連接到自定義視圖。
以下添加到您的自定義視圖頭文件:
@interface MyCustomView : NSView
@property (weak, nonatomic) id userClickedTarget;
@property (assign, nonatomic) SEL userClickedAction;
@end
合成下自定義視圖實現文件中的getter/setter(這是最新版本的Xcode /鐺的實際可選):
@synthesize userClickedTarget = _userClickedTarget;
@synthesize userClickedAction = _userClickedAction;
,並打電話給你的代碼中目標/行動:
if (_userClickedTarget && _userClickedAction) {
[_userClickedTarget performSelector:_userClickedAction
withObject:self
afterDelay:0.0];
}
注使用performSelector:withObject:afterDelay
將中的調用從您的視圖代碼中解耦出來,並在下一次處理runloop時使其運行。
我添加了代碼,但仍然在界面生成器中,當我右鍵單擊自定義視圖時,無法看到「已發送操作」部分的選擇器與窗口控制器連接,就像在NSButton中一樣。 – amramaz
@amramaz你必須以編程方式設置它,也許在自定義視圖的'awakeFromNib'方法中。 – trojanfoe
有沒有辦法使用IB來完成它?我希望它的行爲就像內置的可可視圖一樣。 – amramaz