【问题标题】:Where to put view initialization in nibless AppKit project?在 nibles AppKit 项目中将视图初始化放在哪里?
【发布时间】:2011-12-21 03:38:27
【问题描述】:

我目前正在开发一个 nibles 的 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 中完成所有这些吗?

【问题讨论】:

    标签: objective-c cocoa appkit


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 2014-04-27
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多