Как открыть новое окно в приложении Какао при запуске - PullRequest
3 голосов
/ 20 мая 2011

Я создал приложение для какао (не на основе документов), у меня есть класс MyAppDelegate по умолчанию и файл пера MainMenu. Я также создал новое перо, которое содержит окно с именем Splash и класс контроллера окна (NSWindowController) с именем SplashWindowController.

Я хотел бы, чтобы при открытии приложения вместо открытия пера MainMenu я хотел открыть окно Splash.

Я думаю, что мне нужно создать экземпляр моего SplashWindowController в моем классе AppDelegate, а затем создать экземпляр окна и установить его в front. Однако я попробовал несколько вещей, таких как включение ссылки на файл SplashWindowController.h в мой класс AppDelegate, а также добавление объекта в перо MainMenu и установка его класса SplashWindowController. Но ни с кем не повезло.

Если бы кто-нибудь мог помочь мне с этим, это было бы очень ценно, как это было в этом (что кажется простой задачей) большую часть дня.

Заранее спасибо.

1 Ответ

9 голосов
/ 20 мая 2011

Вы можете просто объединить оба окна в один файл .xib.

ExampleAppDelegate.h

#import <Cocoa/Cocoa.h>

@interface ExampleAppDelegate : NSObject <NSApplicationDelegate> {
    IBOutlet id splash;
    IBOutlet id window;
}

- (IBAction)closeSplashButton:(id)sender;
- (void)closeSplash;

@end

ExampleAppDelegate.m

#import "ExampleAppDelegate.h"

@implementation ExampleAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [NSTimer scheduledTimerWithTimeInterval:5.0
                                     target:self
                                   selector:@selector(closeSplash)
                                   userInfo:nil
                                    repeats:NO];    
}

- (IBAction)closeSplashButton:(id)sender {
    [self closeSplash];
}

- (void)closeSplash {
    [splash orderOut:self];
    [window makeKeyAndOrderFront:self];
    [NSApp activateIgnoringOtherApps:YES];
}

@end

MainMenu.xib

  • Добавить NSWindow (Название: Splash)
  • Добавить NSButton в окно Splash
  • Подключите оба IBOutlets к соответствующим окнам
  • Подключите кнопку к соответствующему IBAction
  • Включите «Видимый при запуске» для всплывающего окна (с помощью Инспектора)
  • Отключите «Видимый»при запуске 'для главного окна (с помощью Инспектора)

enter image description here

Результат

При запуске только всплывающее окновидимый.Всплывающее окно автоматически закрывается через 10 секунд.Пользователь может закрыть окно-заставку, нажав кнопку.Основные окна отображаются после закрытия всплывающего окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...