2016-08-06 14 views
0

Ich möchte ein zweites Fenster hinzufügen, das Ressourcen enthält, die in NSDocuments gezogen und abgelegt werden können.So fügen Sie einer dokumentbasierten Anwendung ein sekundäres Fenster hinzu

My Objekt enthält:

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 sofort nil nach dem Zuweisen und Initialisieren.

Bitte setzen Sie mich direkt darauf.

Dank

EDIT:

ResourceWindow.xib keine Fenstersteuerung nur ein Fenster enthalten. Ist das das Problem? Ist die Lösung, ein benutzerdefiniertes Objekt in die XIB-Datei zu ziehen und dort abzulegen und seine Klasse in NSWindowController zu ändern?

+0

Die Datei Besitzer ResourceWindow.xib sollte das Fenster Controller sein, an das Fenster verbunden. Und "ResourceWindow.xib" "ResourceController.xib". – Willeke

Antwort

0

Zusätzlich zu dem Dateinamen, auf das Willeke verweist, sind Fenster null, bis showWindow aufgerufen wird. Seufzer. Ich begann erneut, indem ich NSWindowManager subclassing und Add XIB-Datei überprüfen. Dann stellen Sie die Klasse von Dateien Besitzer SourceWindowController und änderte den Code zu:

@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

Das Fenster ist Null, bis "Fenster" aufgerufen wird. 'showWindow' ruft' window' auf. Absender 'self.window' in' [self.wc showWindow: self.window] 'ist seltsam. – Willeke

Verwandte Themen