【问题标题】:Show all NSWindows显示所有 NSWindows
【发布时间】:2016-12-08 00:55:52
【问题描述】:

这里的想法很简单,我想在一个应用程序中显示所有 NSWindows。这个想法是应用程序中有两个窗口,一个是隐藏的,另一个是可见的。我想显示应用程序中的所有窗口,然后隐藏一个。我可以隐藏我想隐藏的窗口,但我无法显示这些窗口,因为我无法获得对它的引用。是否有获取应用程序中所有 nswindows 的列表然后遍历它并隐藏它们或类似的东西,我可以使用 [NSApp windows] 但是尝试使用

NSArray *windowArray = [NSApp windows];
[windowArray[0] makeKeyAndOrderFront:self];
[NSApp activateIgnoringOtherApps:YES];

不起作用,也不起作用:

NSArray *windowArray = [NSApp windows];
NSWindow *tempWindow = windowArray[0];
[tempWindow makeKeyAndOrderFront:self];
[NSApp activateIgnoringOtherApps:YES];

有什么建议吗?

【问题讨论】:

  • 这取决于您是否有 xib 文件或窗口控制器 + 视图控制器来容纳窗口。也不清楚您是否有多个 xib 文件或情节提要。
  • 它使用一个包含两个 nswindows 的 nib 文件(这是 xcode 2.5)
  • 我只假设 windowArray 确实包含对您的 xib 文件中所有现有窗口的引用。那么它不应该类似于 for (NSWindow *win in windowArray) { [win setIsVisible = YES]; } ?我不会自己测试它,因为我不再编写 Objective-C。
  • 如何隐藏窗口?
  • [menuWindow OrderOut:self]

标签: objective-c macos cocoa nswindow osx-tiger


【解决方案1】:

事后看来,我有点愚蠢。我有两个渗透率控制器对象,每个对象运行一个窗口。一个几乎没有做任何事情,因为它内部的视图由不同的对象处理,所以我只是删除了那个并让第一个控制器对象处理两个窗口。问题解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    相关资源
    最近更新 更多