Я новичок в кодировании на 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 в подвиде?
Заранее спасибо.