В моем проекте на основе NSPersistenDocument у меня есть структура, подобная этой
myDocument (NSPersistentDocument) -> myDocument.xib (windows xib)
|
|-> view (the self.view) --> ... "other view"
|
|-> some NSArrayController
|
|-> myResourceViewController --> myResourceViewController.xib
|
|-> view (the self.view)
|
|-> myTreeController (a NSTreeController subclass)
в основном, myResourceViewController - это экземпляр viewController, который управляет resourceView и управляет своими данными.
в awakeFromNib метод myDocument У меня есть следующий код
- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
...
[leftBar addSubview:resourceViewController.view]; //i add resourceViewController view
resourceViewController.view.frame = leftBar.bounds;
...
}
в методах myResourceViewController awakeFromNib у меня есть:
-(void)awakeFromNib;
{
NSLog(@"%@", [self description]);
[removeButton bind:@"enabled" toObject:resourceTreeController withKeyPath:@"selection" options:[NSDictionary dictionaryWithObject:NSIsNotNilTransformerName forKey:NSValueTransformerNameBindingOption]];
NSArray *draggedTypes = [NSArray arrayWithObjects:ResourceURIPasteBoardType, nil];
[resourceOutlineView registerForDraggedTypes:draggedTypes];
}
NSLog говорит, что awakeFromNib того же экземпляра myResourceViewController называется 4 раза, я не понимаю, почему. Мой единственный ResourceViewController создан в myDocument xib. Я не использую методы загрузки NSNib везде.