我在xib文件中创建了一个NSWindow
PDFView
,我创建了一个名为MainController的控制器,在那里,我创建了一个ibaction -(IBAction) openFileAction:(id) sender
,它使用了方法
-(void) openFile:(NSString *) path{
NSLog(@"Opening File %@",path);
PDFDocument *pdfDoc = [[PDFDocument alloc] initWithURL:[NSURL fileURLWithPath:path]];
[pdfView setDocument: pdfDoc];
}
我将打开的菜单项链接到openFileAction
,点击后pdf文件在PDFView中正确显示。
我正在做一个逻辑来接收命令行参数
-(MainController *) init{
[super init];
NSArray *myArgs = [[NSProcessInfo processInfo] arguments];
NSLog(@"pdf view %@", pdfView);
if ([myArgs count] >= 2 ){
[self openFile:[myArgs objectAtIndex:1]];
}
return self;
}
正如您所看到的,我在默认构造函数中执行了覆盖,并且在此上下文中pdfView为null,然后在应用程序/主窗口加载后文件未打开。
我的问题是,如何在应用程序加载后在PDFView中打开pdf? UI加载后是否有任何钩子使用?
答案 0 :(得分:0)
如果要在打开PDFView所在的窗口时执行此操作,请使用MainController中的windowDidLoad函数,而不是尝试在init中加载它。
答案 1 :(得分:0)
谢谢slycrel但windowDidLoad是NSWindowController的回调。我自己找到了解决方案,秘诀是
- (void) awakeFromNib{
//Do something after initialize UI components
}
一切顺利。