2015-06-07 32 views
7

Tôi đang cố gắng đặt một lối thoát cho cửa sổ chính của ứng dụng của tôi trong App Delegate, sau đó kết nối nó trong bộ dựng giao diện. Tôi tạo lối thoát trong App Delegate của mình một cách dễ dàng:Tham chiếu chính NSWindow in AppDelegate using Storyboard?

@IBOutlet weak var mainWindow: NSWindow! 

Tuy nhiên, không có cách nào, bên trong trình tạo giao diện, để kết nối cửa hàng tham chiếu với App Delegate. Thay vào đó, tôi chỉ có thể kết nối nó với các điều khiển cửa sổ, mà tôi hy vọng hình ảnh này cho thấy:

enter image description here

Đối tượng đầu tiên là bộ điều khiển cửa sổ và đối tượng thứ hai là Responder Thứ nhất, tuy nhiên đối tượng App đại biểu là còn thiếu. Các thanh menu có đối tượng App đại biểu:

enter image description here

Và tôi có thể kết nối bất cứ điều gì từ thanh menu để bất kỳ cửa hàng trong App đại biểu.

tôi con tôi có thể truy cập các đối tượng cửa sổ bằng cách sử dụng:

NSApp.windows[0] 

Nhưng điều đó dường như dễ bị lỗi, đặc biệt là nếu tôi có nhiều hơn một cửa sổ.

+0

Tại sao bạn muốn một tài liệu tham khảo của NSWindow trong App Delegate? – Kaunteya

+0

@Kaunteya Tôi đang cố triển khai 'applicationShouldHandleReopen: hasVisibleWindows:' và mở lại cửa sổ chính nếu biểu tượng dock được nhấp, nhưng tôi không có cách nào để tham khảo cửa sổ chính từ App Delegate. Điều này có đúng không? – Charlie

Trả lời

5

Tôi không biết nếu đây là cách làm đúng, nhưng điều này sẽ giải quyết vấn đề của bạn.

Decalre một tài sản NSWindow trong appdelegate

weak var window: NSWindow! 

và thiết lập thuộc tính trong một cái gì đó giống như windowWillLoad của NSWindowController

(NSApplication.sharedApplication().delegate as! AppDelegate).window = self.window 

Bạn sẽ phải phân lớp NSWindowController để xác định windowWillLoad

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