Аз съм нов в кодирането на Objective C и концепцията MVC ми причинява известна болка. Целта ми е да разработя приложение за Mac. Успях да създам .xib за главния прозорец. Започва добре. Моят основен NSWindow има своя основен NSView. В този NSView сложих 3 subwiews (с помощта на Interface Builder). Това, което искам, е да променя съдържанието на 2-ри подизглед (чрез зареждане на съдържанието от друг XIB файл, наречен SubWindow1.xib), когато щракна върху бутон, поставен в 1-ви подизглед.
Успявам да уловя щракването и опитах някакъв код за „xib loading“, но той не работи (съдържанието никога не се появява във втория ми подизглед).
Това, което направих е:
- поставете NSButton (на 1-ви подизглед)
- поставете NSObject на Interface Builder (класът е преименуван на CtMainWindow, "Ct" за Controler)
- свържете 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 в подизглед?
Благодаря предварително.