在nibless AppKit项目中放置视图初始化的位置?

时间:2011-12-18 15:09:23

标签: objective-c cocoa appkit

我目前正在开发一个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

如果我现在要在窗口中添加子视图(如按钮和窗格),我会在AppDelegate的init方法中执行所有操作吗?我会将NSWindow子类化并在那里更改init方法吗?我应该在applicationDidFinishLaunching中完成所有这些吗?

1 个答案:

答案 0 :(得分:2)

我建议您遵循MVC架构并为自定义视图创建NSViewController类。您可以使用-loadView方法执行视图初始化。