2013-02-24 20 views
10

Giống như trong tiêu đề, [myWindowController showWindow:nil] không hoạt động. Dưới đây là một số sự kiện mà bạn có thể cần phải biết:NSWindowTrình điều khiển hiển thịWindow: không có gì

  • điều khiển cửa sổ My: KRAuthenticationWindowController
  • Giao diện người xây dựng file: AuthenticationWindow.xib
  • Chủ đầu tư tập được KRAuthenticationWindowController
  • window cửa hàng được kết nối với cửa sổ
  • Window delegate được kết nối với Chủ sở hữu của Tập tin
  • Cửa sổ Visible at launch của cửa sổ bị bỏ chọn
  • Window Release when closed cũng được đánh dấu

Mã của tôi được trình bày dưới đây:

// 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__); 
} 

console của tôi ra:

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:] 

Tôi nghĩ rằng tôi chỉ thiếu một cái gì đó quan trọng. Bất kỳ trợ giúp sẽ được đánh giá cao.

+0

Có thể bạn có vấn đề được mô tả trong câu hỏi này http://stackoverflow.com/questions/3539721/nswindowcontroller-loadwindow-loads-window-from-nib-but-showwindow-does-nothin – sergeyne

+0

Không, không phải vậy. – akashivskyy

Trả lời

31

Thử chuyển authWindowController thành biến mẫu. Hiện tại, đó là biến cục bộ. Khi biến cục bộ biến mất, bộ điều khiển cửa sổ có thể được giải phóng và cửa sổ với nó, vì vậy nó không bao giờ được hiển thị.

+1

Điều này có thể xảy ra nếu bạn đang sử dụng ARC, nhiều chi tiết hơn trong câu hỏi này http://stackoverflow.com/questions/11677043/nswindowcontrollers-window-released-immediately – sergeyne

+2

Vâng, điều đó đã làm được điều đó. Cảm ơn nhiều! :) – akashivskyy

+0

Chỉ cần chạy vào cùng một vấn đề cảm ơn cho các đề nghị – ribeto