【问题标题】:How to open a new window in a Cocoa application on launch如何在启动时在 Cocoa 应用程序中打开一个新窗口
【发布时间】:2011-08-29 04:26:51
【问题描述】:

我已经创建了一个 cocoa 应用程序(不是基于文档的)并且有默认的 MyAppDelegate 类和 MainMenu nib 文件。我还创建了一个新的 nib,其中包含一个名为 Splash 的窗口和一个名为 SplashWindowController 的窗口控制器类 (NSWindowController)。

我想要的是,当应用程序启动而不是 MainMenu nib 窗口打开时,我想打开 Splash 窗口。

我认为我必须在我的 AppDelegate 类中创建一个 SplashWindowController 的实例,然后实例化窗口并将其设置为前面。但是,我尝试了几件事,例如在我的 AppDelegate 类中包含对 SplashWindowController.h 文件的引用,并将一个对象添加到我的 MainMenu nib 并将其类设置为 SplashWindowController。但也没有运气。

如果有人能帮我解决这个问题,我将不胜感激,就像在一天中的大部分时间里所做的那样(这似乎是一项简单的任务)。

提前致谢。

【问题讨论】:

    标签: objective-c cocoa macos xcode4


    【解决方案1】:

    您可以简单地将两个窗口合并为一个 .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 添加到启动窗口
    • 将两个 IBOutlets 连接到相应的窗口
    • 将按钮连接到相应的 IBAction
    • 为启动窗口启用“启动时可见”(使用检查器)
    • 禁用主窗口的“启动时可见”(使用检查器)

    结果

    在启动时,只有启动窗口可见。启动窗口会在 10 秒后自动关闭。用户可以通过按下按钮直接关闭启动窗口。关闭启动窗口后会显示主窗口。

    【讨论】:

      猜你喜欢
      • 2012-07-19
      • 2011-07-29
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多