2012-07-31 43 views
1

我想創建一個自定義視圖,比如MyView,它只包含一個按鈕,當我點擊它時打印出「hello my view」。當我下次想使用它時,我只需要從IB添加一個自定義視圖到窗口,將MyView.m添加到項目中,並將自定義視圖的類設置爲MyView。cocoa:如何通過IB創建自定義視圖?

我的問題是:

  1. 我想用IB來設置MyView的外觀,但我不知道如何得到相應的視圖文件:MyView.m爲了使用MyView的。 m文件下次。

回答

1

您需要使用代碼創建子類視圖;例如:

MyView.h:

#import <Cocoa/Cocoa.h> 

@implementation MyView : NSView 
{ 
    IBOutlet NSTextField *_label; 
} 

- (IBAction)buttonPressed:(id)sender; 

@end 

MyView.m:

#import "MyView.h" 

- (id)initWithFrame:(NSRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self != nil) 
    { 
     // Init here 
    } 
    return self; 
} 

- (void)awakeFromNib: 
{ 
    // Init here 
} 

- (IBAction)buttonPressed:(id)sender 
{ 
    [_label setStringValue:@"hello my view"]; 
} 

@end 

你需要使用IB創建自定義視圖佈局,改變從NSView所屬的類來MyView(使用如果我記得第三個標籤)。

然後從左窗格中的擁有對象連接_label(按住Ctrl鍵拖動),並將按鈕動作連接到方法(按住Ctrl鍵拖動)buttonPressed:

+0

如果我想在其他項目中使用MyView類,可以通過將MyView.m文件添加到沒有xib文件的項目中來使用MyView類嗎?對象庫中的ABPersonView可以顯示類似AddressBook的接口,但是我沒有找到關於ABPersonView的nib文件。 – NOrder 2012-07-31 09:29:59

+0

是的;只需複製'.m','.h'和'.xib'文件即可。 – trojanfoe 2012-07-31 09:30:34