2012-11-29 33 views
11

Vì vậy, tôi đang cố gắng để mở một NSWindow mới như vậy:NSWindowController ShowWindow: nhấp nháy cửa sổ

NSWindowController *winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"]; 
[winCon showWindow:self]; 

Khi tôi làm điều này, nhấp nháy cửa sổ mới trên màn hình, như trong nó xuất hiện và sau đó nhanh chóng biến mất . Tôi biết rằng tôi có cửa sổ của tôi được tham chiếu chính xác trong IB và mọi thứ. Nó giống như nó muốn hiển thị cửa sổ, nhưng sau đó nó được deallocated hoặc một cái gì đó kỳ lạ gần như ngay lập tức. Bất kỳ trợ giúp sẽ được đánh giá cao.

Trả lời

17

Trước tiên, tên của trình khởi tạo không phải là -initWithNibName:, nhưng -initWithWindowNibName:.

Thứ hai và điều này đúng nếu bạn đang sử dụng ARC, cửa sổ của bạn sẽ phát triển vì bạn không có tham chiếu mạnh mẽ cho phiên bản NSWindowController. Khi phương pháp kết thúc, bạn cũng tham khảo.

Nếu, nói, bạn đã làm điều này thay vì trong giao diện đại biểu ứng dụng của bạn:

@property(strong) NSWindowController *winCon; 

Và tổng hợp nó trong tập tin thực thi của bạn:

@synthesize winCon; 

Sau đó, bạn có thể thiết lập như thế này:

self.winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"]; 
[self.winCon showWindow:self]; 

Cửa sổ của bạn sẽ không biến mất. Bộ điều khiển cửa sổ sẽ được phát hành khi ứng dụng đóng.

+0

Điều đó hoạt động hoàn hảo! Tôi nghĩ nó có liên quan gì đó như thế, nhưng tôi không biết cách sửa nó. Cảm ơn bạn rất nhiều. –

+0

Bạn đang rất hoan nghênh. – trudyscousin

+0

Có lẽ một trong những giải thích tốt nhất mà tôi đã nghe. Ví dụ rất tốt về cách ARC hoạt động khi bạn không tham chiếu thuộc tính cho biến của bạn ... Cảm ơn bạn! –

Các vấn đề liên quan