Задача C — загрузка XIB в NSView

Я новичок в кодировании на Objective C, и концепция MVC доставляет мне некоторую боль. Моя цель - разработать приложение для Mac. Мне удалось создать .xib для главного окна. Начинается хорошо. Мой основной NSWindow имеет свой основной NSView. В этом NSView я поместил 3 подвида (используя Interface Builder). Я хочу изменить содержимое второго подпредставления (путем загрузки содержимого из другого файла XIB, называемого SubWindow1.xib), когда я нажимаю кнопку, помещенную в 1-е подпредставление.

Я могу поймать щелчок и попробовать код «загрузки xib», но он не работает (контент никогда не появляется в моем втором подвиде).

Что я сделал:

  • поместите NSButton (на 1-й подвид)
  • поместите NSObject в Interface Builder (класс переименован в CtMainWindow, «Ct» для контроллера)
  • связать IBAction (changeToSubWindow1) и IBOutlet (vSubView2, который является моим вторым подвидом)
  • создайте класс CtMainWindow, создайте класс VwSubWindow1 (который расширяет NSView)

В changeToSubWindow1() я написал:

VwSubWindow1 * vProfile = [[VwSubWindow1 alloc] initWithFrame:vSubView2.bounds];
[vProfile loadXib];
[vProfile.superview addSubview:vProfile];

Функция loadXib() делает:

NSNib * nib = [[NSNib alloc] initWithNibNamed:[self @"SubWindow1"] bundle:nil];  //@"SubWindow1" is the name of the expected loaded xib without .xib extention
[nib instantiateWithOwner:self topLevelObjects:nil];

И Вуаля. Я надеялся, что загрузив sub xib в представление и поместив это представление в мое второе подпредставление, оно появится.

Я также попытался поместить только следующий код в changeToSubWindow1()

VwSubWindow1 * vProfile = [[VwSubWindow1 alloc] initWithFrame:vSubView2.bounds];
[vProfile loadSubWindow];

Функция loadSubWindow() делает:

[NSBundle loadNibNamed:@"SubWindow1" owner:self];

Без большего успеха.

Я уже прочитал множество потоков из stackoverflow и перепробовал множество решений, но ни одно из них не сработало для меня.

Может ли кто-нибудь дать мне подсказку, которая мне нужна, чтобы загрузить и отобразить Xib в подвиде?

Заранее спасибо.


person Matrix    schedule 11.11.2012    source источник
comment
Для справки, я поставил приветствие в начале своего сообщения, но оно не отображается, даже если я редактирую свое сообщение.   -  person Matrix    schedule 12.11.2012


Ответы (1)


вы можете попробовать этот метод

можно поставить 3 файла xib и 3 окна. подключить каждое окно

self.packages = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
[self.window1.contentView addSubview:self.vc.view];
self.packages.view.frame = ((NSView*)self.window1.contentView).bounds;
[window1 makeKeyAndOrderFront:NSApp];
person Kelvin Ricafort    schedule 08.09.2014