LoadNibNamed не устанавливает выход - PullRequest
0 голосов
/ 06 декабря 2011

Я пытаюсь добавить NSPopOver в свое приложение, но загружаю его только при запуске 10.7 или более поздней версии. Я поместил popover, view controller & view в отдельный xib и загрузил его с

BOOL loaded = [NSBundle loadNibNamed:@"Popovers.xib" owner:self];

изнутри метод awakeFromNib делегатов моего приложения. Xib загружается нормально (загружено YES), но выход, указывающий на NSPopover, остается нулевым. Есть ли проблема с загрузкой xib внутри метода awakeFromNib?

Интересно, что когда я не включил расширение .xib в имя файла, он упал.

1 Ответ

1 голос
/ 10 апреля 2012

Если я правильно понял, метод loadNibNamed: owner: NSBundle будет загружать только пакет, но не создавать экземпляры объектов верхнего уровня. Вы можете сделать это, используя соответствующий метод NSNib, например, instantiateNibWithOwner: topLevelObjects.:

Я предпочитаю загружать перо, создавая экземпляр подкласса NSViewController:

viewController = [[MyViewController alloc] initWithNibName:@"name" bundle:[NSBundle mainBundle]]

, а затем создать экземпляр Nib внутри пользовательского контроллера представления - (id) initWithNibName: (NSString *) nibNameOrNil bundle: (NSBundle *) nibBundleOrNil метод:

[self loadView];
...