在控制器构造函数中将Document设置为PDFview

时间:2010-11-12 22:16:07

标签: objective-c cocoa pdfview

我在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加载后是否有任何钩子使用?

2 个答案:

答案 0 :(得分:0)

如果要在打开PDFView所在的窗口时执行此操作,请使用MainController中的windowDidLoad函数,而不是尝试在init中加载它。

答案 1 :(得分:0)

谢谢slycrel但windowDidLoad是NSWindowController的回调。我自己找到了解决方案,秘诀是

- (void) awakeFromNib{
 //Do something after initialize UI components 
}

一切顺利。