Куда поместить инициализацию вида в проекте nibless AppKit? - PullRequest
2 голосов
/ 18 декабря 2011

В настоящее время я работаю над проектом nibless AppKit, и мне было интересно, где было бы целесообразно инициализировать представления, отличные от главного окна. Вот что у меня сейчас:

main.m

#import <Cocoa/Cocoa.h>
#import "AppDelegate.h"

int main(int argc, char *argv[])
{
    NSApplication *application = [NSApplication sharedApplication];

    AppDelegate * applicationDelegate = [[AppDelegate alloc] init];

    [application setDelegate:applicationDelegate];

    [application run];

    return EXIT_SUCCESS;
}

И мой AppDelegate:

#import "AppDelegate.h"
@implementation AppDelegate

- (id)init {

    self = [super init];
    if (!self) {
        return nil;
    }

    NSRect contentSize = NSMakeRect(200, 300, 300, 100);
    window = [[NSWindow alloc] initWithContentRect: contentSize styleMask:NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask
                                    backing:NSBackingStoreBuffered 
                                    defer:NO];
    window.title = @"NewWindow";
    window.level = NSModalPanelWindowLevel;
    return self;
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [window makeKeyAndOrderFront:self];
}
@end

Если я хочу добавить в окно подпредставления, такие как кнопки и панели, сделаю ли я все это в методе init моего AppDelegate? Буду ли я подкласс NSWindow и изменить там метод init? Должен ли я сделать все это в applicationDidFinishLaunching?

1 Ответ

2 голосов
/ 20 декабря 2011

Я предлагаю вам следовать архитектуре MVC и создать класс NSViewController для своего пользовательского представления. Вы можете выполнить инициализацию представления в методе -loadView.

...