2014-01-16 48 views
1

我已經創建了一個自定義視圖,它繼承自NSView。 我的目標是在用戶點擊自定義視圖時,通知與包含自定義視圖的窗口關聯的NSWindowControl。實現目標 - 自定義視圖中的操作模式

我想實現這個使用Action - Target模式,就像NSButton一樣。 這樣我就可以使用Interface Builder將窗口控制器中的操作連接到自定義視圖。

回答

0

以下添加到您的自定義視圖頭文件:

@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時使其運行。

+0

我添加了代碼,但仍然在界面生成器中,當我右鍵單擊自定義視圖時,無法看到「已發送操作」部分的選擇器與窗口控制器連接,就像在NSButton中一樣。 – amramaz

+0

@amramaz你必須以編程方式設置它,也許在自定義視圖的'awakeFromNib'方法中。 – trojanfoe

+0

有沒有辦法使用IB來完成它?我希望它的行爲就像內置的可可視圖一樣。 – amramaz

相關問題