2011-02-04 3 views
2


У меня есть два файла с nib. У одного есть NSWindow, а у другого есть NSView. Я хочу, чтобы NSView загружал NSWindow во время выполнения. Я понимаю, что мне придется использовать классы NSWindowController и NSViewController. Но я просто не могу понять, как это сделать.
Я новичок в какао. Пожалуйста, расскажите мне, как достичь этого.
Если возможно, можете ли вы направить меня в какое-нибудь примерное приложение или руководство для этого?
Заранее спасибо ..Как загрузить NSView в NSWindow динамически?

UPDATE :: Смотрите комментарии в строке

@interface ViewAvailableItemsWindowController : NSObject { 
    IBOutlet NSWindow * viewAvailableItemsWindow; //Window in question 
    IBOutlet NSView * viewAvailableItemsView; //View in question 

    ItemSearchViewController * instanceItemSearchView; //ViewController object 
} 

@end 


@implementation ViewAvailableItemsWindowController 

-(void)awakeFromNib{ 
    [viewAvailableItemsWindow makeKeyAndOrderFront:nil]; 
    instanceItemSearchView = [[ItemSearchViewController alloc]initWithNibName:@"ItemSearchView" bundle:nil] ; //Initiating the viewController with the nib for the view. 
    [viewAvailableItemsView addSubview:[instanceItemSearchView view]]; //Adding the subview to the window.. 

} 

-(void)dealloc{ 
    [instanceItemSearchView release]; 
    [super dealloc]; 
} 

@end 

ответ

1

Если предположить окно уже имеет вид, что вы хотите вставить загруженный вид в, вы должны указать существующий вид в окне, чтобы добавить новое представление в качестве подвью.

View Programming Guide имеет дополнительную информацию.

+6

Думаю, он искал мини-учебник и некоторую помощь, а не комментарий RTFM. – johnrubythecat

+1

Его не он, его a она :) (очень поздно, но все еще хотелось исправить u;)) –

3

// EDIT относительно вашего вопроса вы сначала установили contentView вашего NSWindow как itemsView. Вы можете сделать это один раз, например. в viewDidLoad или init/awakeFromNib:

viewAvailableItemsWindow.contentView = viewAvailableItemsView; 

то, чтобы сделать вид динамического добавления новых элементов в window.contentView:

[viewAvailableItemsWindow.contentView addSubview:[instanceItemSearchView view]]; 

удалить старые и добавить новые называют removeFromSuperview на старом, а затем добавить новый, как указано выше

+0

Это действительно комментарий, а не ответ на вопрос. Пожалуйста, используйте «добавить комментарий», чтобы оставить отзыв для автора. –

+0

добавлено описание –

Смежные вопросы