2016-08-06 4 views
0

NSDocumentsにドラッグアンドドロップできるリソースを含むセカンダリウィンドウを追加したいとします。文書ベースのアプリケーションにセカンダリウィンドウを追加する方法

私のプロジェクトが含まれています

1)ResourceWindow.xib

2)ViewController.xib

3)Main.storyboard

@interface AppDelegate() 


@property (nonatomic,strong)NSWindowController* wc; 
@property (nonatomic, weak)NSWindow* resourceWindow; 
@property (nonatomic, strong)ViewController* vc; 


@end 

@implementation AppDelegate 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 

    self.wc = [[NSWindowController alloc]initWithWindowNibName:@"ResourceController.xib"]; 
    self.resourceWindow = [self.wc window]; 
    [self.wc showWindow:self]; 
    self.vc = [[ViewController alloc]initWithNibName:nil bundle:nil]; 
    [self.vc.view setFrame:[self.resourceWindow.contentView bounds]]; 
    [self.resourceWindow.contentView addSubview:self.vc.view]; 
} 

self.wc.windowはすぐにゼロでありますそれを割り当てて初期化した後

私にこれをまっすぐに設定してください。

おかげ

EDIT:

ResourceWindow.xibがちょうど窓ウィンドウコントローラが含まれていません。それは問題ですか?カスタムオブジェクトをxibファイルにドラッグアンドドロップし、そのクラスをNSWindowControllerに変更する方法はありますか?

+0

ResourceWindow.xibのファイル所有者は、ウィンドウに接続してウィンドウに接続する必要があります。と "ResourceWindow.xib"≠ "ResourceController.xib"です。 – Willeke

答えて

0

Willekeが指摘しているファイル名の問題に加えて、showWindowが呼び出されるまではウィンドウはnilです。一口。 NSWindowManagerをサブクラス化してxibファイルを追加してチェックをやり直しました。次に、ファイルの所有者のクラスをSourceWindowControllerに設定し、コードを次のように変更します。

@property (nonatomic,strong)SourceWindowController* wc; 
@property (nonatomic, weak)NSWindow* resourceWindow; 


@end 

@implementation AppDelegate 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{  
    self.wc = [[SourceWindowController alloc]initWithWindowNibName:@"SourceWindowController"]; 
    [self.wc showWindow:self.window]; 
    self.resourceWindow = [self.wc window]; 
+0

'window'が呼び出されるまで、ウィンドウはnilです。 'showWindow'は' window'を呼び出します。 '[self.wc showWindow:self.window]のSender' self.window'は奇妙です。 – Willeke

関連する問題