我创建了一个 NSWindow xib 文件,我想在单击另一个窗口中的按钮时打开它。
现在,为了控制 NSWindow 的行为,我从 xib 中的 Library 中拖出一个对象,并将其更改为我在 XCode 中定义的 NSWindowController(即 ListingWindowController)的子类。
同样,我还创建了一个 NSViewController 的子类(即 ListingViewController)来管理 NSWindow 内的 NSView。为此,我将 NSViewController 从 xib 中的库中拖出,并将其类更改为 ListingViewController。
@class ListingViewController;
@interface ListingWindowController : NSWindowController {
IBOutlet ListingViewController *listingVC;
}
@property (nonatomic, retain) IBOutlet ListingViewController *listingVC;
@end
我在IB中连接了我的窗口控制器的窗口和listingVC。
现在要在我的启动(第一个)窗口中单击按钮来调用此窗口,我使用 initWithWindowNibName 像这样创建窗口控制器。
- (IBAction) pushConnect:(id)sender {
NSLog(@"Connect pushed.");
if (wc == nil) {
wc = [[ListingWindowController alloc] initWithWindowNibName:@"ListingWindow" owner:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeWindow:) name:NSWindowWillCloseNotification object:nil];
[wc showWindow:sender];
}
}
问题是,尽管在 IB 中为即将到来的窗口/视图的视图控制器完成了所有绑定,但即使在新窗口加载后(下面的代码),窗口和 ListingVC 仍然是(null),(null)。
- (void)windowDidLoad {
[super windowDidLoad];
NSLog(@"windowDidLoad = %@, %@", self.window, self.listingVC);
}
请帮助为什么连接不起作用。我正在努力解决这个问题很长一段时间。
PS:我来自iOS编程背景。所以,我假设 Mac 的窗口/视图控制器的行为类似于 iOS UIViewControllers。
蒂亚..