Обычно я делаю приложение iOS, но теперь я пытаюсь сделать приложение OS X, и я теряюсь в самом начале. Скажем, стиль, который я делаю, приложения iOS полностью программны, нет файлов xib или вообще, потому что у меня есть намного больше контроля, набрав, чем перетаскивая. Однако в программировании OS X он начинается с некоторых файлов xib с элементами меню и по умолчанию. В пунктах меню есть довольно много элементов, поэтому, вероятно, я не хочу, чтобы что-то мне не нравилось, но я хочу программно создать свое первое окно самостоятельно.
Итак, я сделал это:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSUInteger windowStyleMask = NSTitledWindowMask|NSResizableWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask;
NSWindow* appWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(200, 200, 1280, 720) styleMask:windowStyleMask backing:NSBackingStoreBuffered defer:NO];
appWindow.backgroundColor = [NSColor lightGrayColor];
appWindow.minSize = NSMakeSize(1280, 720);
appWindow.title = @"Sample Window";
[appWindow makeKeyAndOrderFront:self];
_appWindowController = [[AppWindowController alloc] initWithWindow:appWindow];
[_appWindowController showWindow:self];
}
Итак, здесь я создал окно первым и использую этот windowController для запуска этого окна. Окно появляется таким образом, но я могу указать только внутренние элементы, такие как кнопки и метки здесь, но не в windowController. Это заставляет меня чувствовать себя плохо, поэтому я попробовал другой способ.
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
_appWindowController = [[AppWindowController alloc] init];
[_appWindowController showWindow:self];
}
и после этого я хочу установить другие элементы в функции loadWindow:
в windowController следующим образом:
- (void)loadWindow
{
[self.window setFrame:NSMakeRect(200, 200, 1280, 720) display:YES];
self.window.title = @"Sample window";
self.window.backgroundColor = [NSColor lightGrayColor];
NSButton* sampleButton = [[NSButton alloc] initWithFrame:NSRectFromCGRect(CGRectMake(100, 100, 200, 23))];
sampleButton.title = @"Sample Button!";
[sampleButton setButtonType:NSMomentaryLightButton];
[sampleButton setBezelStyle:NSRoundedBezelStyle];
[self.window.contentView addSubview:sampleButton];
NSLog(@"Loaded window!");
[self.window makeKeyAndOrderFront:nil];
}
К сожалению, это никогда не работает. loadWindow:
никогда не вызывается, а windowDidLoad:
. Куда они отправились?
И, пожалуйста, не спрашивайте, почему я не использую перья. Я хочу сделать некоторые персонализированные представления внутри, возможно, OpenGL, поэтому я не думаю, что nibs могут справиться с этим. Я очень признателен, если кто-то может помочь. Спасибо.
А также, кто знает, как даже запускать пункты меню с нуля, программно?
Я использую последний XCode.