2013-02-24 25 views
10

Başlıkta olduğu gibi, [myWindowController showWindow:nil] çalışmıyor.NSWindowController showWindow: nil hiçbir şey yapmıyor

  • Benim pencere denetleyici: KRAuthenticationWindowController
  • Arayüz oluşturucu dosyası: AuthenticationWindow.xib dosya'nın sahibi penceresine KRAuthenticationWindowController
  • window çıkış bağlandığında olduğu
  • Pencere en İşte bilmeniz gereken bazı gerçekler delegate, Dosyanın sahibine bağlanır
  • Pencerenin Visible at launch işaretli değilse
  • Pencere en Release when closed

Kodum aşağıda sunulmuştur de işaretlenmemiş olduğundan:

// KRApplicationDelegate.m 

- (void)applicationDidFinishLaunching:(NSNotification *)notification { 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
    KRAuthenticationWindowController *authWindowController = [[KRAuthenticationWindowController alloc] init]; 
    [authWindowController showWindow:nil]; 
    [[authWindowController window] makeKeyAndOrderFront:nil]; 
} 

// KRAuthenticationWindowController.m 

- (id)init { 
    self = [super initWithWindowNibName:@"AuthenticationWindow"]; 
    if(!self) return nil; 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
    return self; 
} 

- (void)loadWindow { 
    [super loadWindow]; 
    [self.window setBackgroundColor:[NSColor colorWithDeviceWhite:0.73 alpha:1]]; 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
} 

- (void)windowDidLoad { 
    [super windowDidLoad]; 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
} 

- (void)showWindow:(id)sender { 
    [super showWindow:sender]; 
    NSLog(@"%@",self.window); 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
} 

Benim konsol çıkışı:

2013-02-24 16:21:45.420 Application[3105:303] -[KRApplicationDelegate applicationDidFinishLaunching:] 
2013-02-24 16:21:45.421 Application[3105:303] -[KRAuthenticationWindowController init] 
2013-02-24 16:21:45.428 Application[3105:303] -[KRAuthenticationWindowController loadWindow] 
2013-02-24 16:21:45.428 Application[3105:303] -[KRAuthenticationWindowController windowDidLoad] 
2013-02-24 16:21:45.556 Application[3105:303] <NSWindow: 0x10016e860> 
2013-02-24 16:21:45.556 Application[3105:303] -[KRAuthenticationWindowController showWindow:] 

ben sadece önemli bir şey eksik düşünüyorum. Herhangi bir yardım takdir edilecektir.

+0

Belki de bu soruda açıklanan sorun var http://stackoverflow.com/questions/3539721/nswindowcontroller-loadwindow-loads-window-from-nib-but-showwindow-does-nothin – sergeyne

+0

Hayır, öyle değil. – akashivskyy

cevap

31

authWindowController'ı örnek değişkenine dönüştürmeyi deneyin. Şu anda yerel bir değişken. Yerel değişken kaybolduğunda, pencere denetleyicisi serbest bırakılabilir ve onunla birlikte pencere açılabilir, böylece hiçbir zaman gösterilmez.

+1

Eğer ARC kullanıyorsanız, bu soruda daha fazla bilgi bulabilirsiniz http://stackoverflow.com/questions/11677043/nswindowcontrollers-window-released-immediately – sergeyne

+2

Evet, bu hile yaptı. Çok teşekkür ederim! :) – akashivskyy

+0

Sadece aynı konuya koştu öneri – ribeto

İlgili konular