我的处理方法可能全错了,所以我很感谢你的耐心。
我的主 XIB 文件中有一个按钮链接到我的 document.m 文件中的此方法:
- (IBAction)showTagModal:(id)sender {
if (!_FileTagWindowController){
_FileTagWindowController = [[FileTagWindowController alloc]init];
}
[_FileTagWindowController showWindow:self];
}
_FileTagWindowController 被声明为 document.h 中的一个属性,并在调用该方法时使用断点,据我所知是正确初始化,但是 _windowNibName 和 _window 仍然是 nil。
FileTagWindowController.h 看起来像这样。
#import <Cocoa/Cocoa.h>
@interface FileTagWindowController : NSWindowController{
}
@property (strong) IBOutlet NSArrayController *tagsArray;
- (IBAction)saveContext:(id)sender;
@end
FileTagWindowController.m 看起来像这样:
#import "FileTagWindowController.h"
@interface FileTagWindowController ()
@end
@implementation FileTagWindowController
- (id)initWithWindow:(NSWindow *)window
{
self = [super initWithWindow:window];
if (self) {
// Initialization code here.
}
return self;
}
- (void)windowDidLoad
{
[super windowDidLoad];
NSLog(@"Window Did Load!");
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
}
- (IBAction)saveContext:(id)sender {
}
@end
在我的 FileTagWindowController.xib 中,我将File Owner设置为 FileTagWindowController 作为自定义类。我将文件所有者的“窗口”插座链接到窗口(NSPanel)。这就是所有应该要求的正确吗?WindowDidLoad 中的 NSLOG 语句永远不会被调用。我尝试在 FileTagWindowController.m 中使用 [super initWithWindowNibName] ,但这不仅会导致应用程序崩溃,还会导致 Xcode 崩溃,并且会出现无休止的初始化循环。我在这里遗漏了一些明显的东西吗?
非常感谢。