2011-09-13 58 views
0

我想創建NSView的子視圖並將其鏈接到MenuView.xib。用於NSMenuItem的NSView子類

我得:

- MenuView.m 
- MenuView.h 
- MenuView.xib 

在Xcode我創造了我的廈門國際銀行,並設置爲customclass我的 'MenuView'。現在,我想這樣的編程方式添加我的新觀點通過命令:

NSView *vv = [[MenuView alloc] initWithFrame:CGRectMake(0, 0, 300, 200)]; 

NSMenuItem *newItem = [[NSMenuItem alloc] initWithTitle:@"title" action:nil keyEquivalent:@""]; 
[newItem setView:vv]; 

但我只看到一個空的空間沒有任何內容。我如何告訴MenuView.m類使用MenuView.xib文件進行渲染?那是錯的嗎?

謝謝。

回答

1

使用NSViewController,它設計用於從nib文件加載視圖。在您的筆尖文件中,將NSViewController設置爲文件的所有者,然後設置view出口文件的所有者,以便它指向您在筆尖的視圖。

然後,你可以這樣做:

NSViewController* viewController = [[NSViewController alloc] initWithNibName:@"YourNibName" bundle:nil]; 
YourCustomView* view = [viewController view]; //this loads the nib 
[viewController release]; 
//do something with view 
+0

謝謝你,簡單的作品! – DeejonZ

0

從筆尖(改編自礦山的another answer)加載一個觀點:

NSNib *nib = [[NSNib alloc] initWithNibNamed:@"MenuView" bundle:nil]; 
NSArray *nibObjects; 
if (![nib instantiateNibWithOwner:self topLevelObjects:&nibObjects]) return nil; 

NSMenuItem *item = nil; 

for (id obj in nibObjects) 
    if ([obj isKindOfClass:[NSMenuItem class]]) { 
     item = obj; 
     break; 
    } 

[someView insertSubview:item]; 

如果你想比self作爲文件所有者以外的東西,將參數更改爲instantiateNibWithOwner:

+0

我來試試你的方法儘快 – DeejonZ