objective-c - 一个应用程序代理,两个窗口

标签 objective-c macos cocoa interface-builder

我有一个简单的 Cocoa 应用程序。它有两个窗口,每个窗口都在一个单独的 xib 文件中:

  • MainMenu.xib
  • SecondaryWindow.xib

我有一个 AppDelegate 类,它引用了 MainMenu.xib 中的窗口。我试图让它引用SecondaryWindow.xib 中的窗口。我对如何做到这一点感到困惑。我已经做了一个导出,如下:

@interface AppDelegate : NSObject <NSApplicationDelegate>

@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet NSWindow *secondaryWindow;

@end

这里是实现:

@implementation AppDelegate

@synthesize window = _window;
@synthesize secondaryWindow = _secondaryWindow;


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [NSBundle loadNibNamed:@"SecondaryWindow" owner:self];
    NSLog(@"_window = %@", _window);
    NSLog(@"_secondaryWindow = %@", _secondaryWindow);
}

@end

_secondaryWindow 始终为(空)

我已经从 secondaryWindow.xib 连接第二个窗口到 AppDelegate 中的导出添加了一个导出。我还需要在 secondaryWindow.xib 中做什么才能完成连接?

编辑:添加了[NSBundle loadNibNamed...]

最佳答案

您需要加载它... 默认情况下,MainWindow.xib 由框架加载,该框架创建自己的应用程序委托(delegate)实例。 您应该从应用程序委托(delegate)加载第二个窗口(尝试[NSBundle laodNibNamed:@"SecondaryWindow"owner:self]。执行此操作时,文件的所有者将是应用程序委托(delegate) - 更改界面生成器中的文件所有者以反射(reflect)该文件并与其建立连接)

关于objective-c - 一个应用程序代理,两个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11631250/

相关文章:

ios - iOS11中如何修改NSURLRequest http方法?

ios - 为 tabbaritem 添加图像,但它不显示在 ios 中

Swift:NSTableView拖动以重新排序项目如何在拖动过程中显示单元格

objective-c - 获取的属性、跨商店关系

objective-c - NS表: How to get cell type of column?

ios - 表格单元格中的动画约束更改

objective-c - 无需解锁对话框即可读取权限

xcode - macOS公证: altool cannot be found

objective-c - 来自 NSCollectionViewItem 的 Popover Segue

cocoa - 如何获取 NSRunningApplication 的窗口