AppDelegate (OSX) 中主 NSWindow 的引用出口

Posted

技术标签:

【中文标题】AppDelegate (OSX) 中主 NSWindow 的引用出口【英文标题】:Reference outlet to main NSWindow in AppDelegate (OSX) 【发布时间】:2015-05-27 20:27:42 【问题描述】:

当您创建一个新项目时,我似乎记得您可以使用self.windowAppDelegate 方法中访问它在情节提要中创建的基本空白窗口。

我似乎也无法通过情节提要为AppDelegate.h 文件设置参考出口。我只是产生幻觉还是无法从AppDelegate 访问窗口/控制器?

我是否混淆了 ios 和 OSX 实践?

【问题讨论】:

【参考方案1】:

使用故事板,似乎不可能将 WindowController 连接到 AppDelegate。我使用以下内容来获取对主窗口的引用:

AppDelegate.h

@property (weak) NSWindow* window;

AppDelegate.m

    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
            _window = [[[NSApplication sharedApplication] windows] firstObject];
    

请参阅this question 以获取快速解决方案。希望这会有所帮助:)

【讨论】:

【参考方案2】:

它对我有用。

我在 AppDelegate.h 中添加了一个 IBOutlet

@property (nonatomic) IBOutlet NSWindow *window;

然后在您的 Interface Builder(我的 MainMenu.xib)中选择 App Delegate:

您的 IBOutlet 应位于右侧的 Connection inspector 中:

也许您的 .xib 和 AppDelegate 之间的连接丢失了?

【讨论】:

我尝试控制单击并拖动到我的 appdelegate.h 文件以创建参考插座,但它不会做任何事情(通常会出现蓝线并且 id 能够创建一个iboutlet)我也在使用故事板而不是.xib。这基本上是一个使用故事板的新鲜可可应用程序。我想我可能只是将 iOS 基础知识与 OSX 混淆了,但我觉得我应该能够从 appdelegate.m 调用 self.window 而无需做任何事情...... 抱歉,在您的问题中错过了您的故事板参考。我没有使用带有故事板的 Cocoa 应用程序,所以我可能无法在这里为您提供帮助。 不用担心,我想我找到了解决问题的方法,而无需通过 appdelegate 访问窗口!感谢您的帮助:) 您找到解决方案了吗?我卡在这里

以上是关于AppDelegate (OSX) 中主 NSWindow 的引用出口的主要内容,如果未能解决你的问题,请参考以下文章

如何在 OSX 应用程序中将 CoreData 管理与 AppDelegate 分离

“无法识别的选择器”-将 AppDelegate 的 NSManagedObjectContext 导入其他类 (OSX) 时出错

收到“此应用程序正在从后台线程修改自动布局引擎”错误?

AppDelegate 在启动时最后实例化

Swift:如何在测试期间不加载 AppDelegate

使用 OCMock 进行 OSX 应用程序测试