2011-07-21 43 views
5

Tôi là người mới bắt đầu hoàn chỉnh trong Objective-C và Cocoa.Ứng dụng Cacao không cửa sổ

Tôi muốn tạo một ứng dụng ít cửa sổ, chỉ hiển thị NSStatusItem trong khay hệ thống. Khay hoạt động tốt, tuy nhiên, có một vấn đề.

Vì lý do nào đó, ứng dụng của tôi tự động tạo cửa sổ cho tôi mà tôi không muốn.

Tôi nghĩ nguyên nhân là do mẫu Trình tạo giao diện tự động được tạo khi tôi tạo ứng dụng trong Xcode, vì vậy tôi đã xóa tệp .nib khỏi dự án. Tuy nhiên cửa sổ vẫn được tạo.

Các dòng chỉ chứa một tham chiếu đến các cửa sổ đang ở tiêu đề:

NSWindow *window; 
@property (assign) IBOutlet NSWindow *window; 

và trong các tập tin thực hiện:

@synthesize window; 

Cả hai đều được tự động thêm vào, tôi không viết những dòng này.

Làm cách nào để dừng ứng dụng tạo cửa sổ? Tôi thậm chí đã cố gắng xóa tất cả các tham chiếu đến window khỏi mã, bao gồm cả NSWindow *window nhưng cửa sổ vẫn được tạo.

Sửa lỗi tạm thời của tôi ngay bây giờ là gọi [window close]; trong ứng dụng, nhưng chắc chắn có cách nào tốt hơn?

Trả lời

8

nghi ngờ của tôi là không có gì trong mã của bạn đang tạo ra cửa sổ. Khi bạn tạo một ứng dụng Cocoa Xcode mới, Xcode sẽ thiết lập một XIB với giao diện của bạn cho bạn. Mở MainMenu.xib (phải nằm trong phần Tài nguyên) trong trình xây dựng giao diện và xóa cửa sổ mà nó ném vào theo mặc định.

+0

Vâng, đó là những gì tôi nghĩ. Tôi đã xóa toàn bộ tệp .xib nhưng vẫn xuất hiện ... – houbysoft

+0

Chỉ cần tạo lại dự án và lần này tôi đã xóa cửa sổ bên trong .xib chứ không phải toàn bộ xib và nó hoạt động. Cảm ơn .. – houbysoft

+0

Tuyệt vời. Khi bạn xóa XIB, có thể là tệp nhị phân của ứng dụng hiện tại đã giữ XIB được biên dịch từ trước khi bạn xóa nó. Bằng cách đó XIB về cơ bản vẫn tồn tại. Dù sao, vui mừng khi biết rằng bạn đã nhận ra nó! –

4

Nếu bạn không muốn hiển thị cửa sổ, bạn có thể xem xét chạy ứng dụng của mình dưới nền. Điều đó sẽ ngăn chặn cửa sổ xuất hiện.

Để chạy ứng dụng của bạn ở chế độ nền, thiết lập YES để "Ứng dụng chỉ là nền" trong file plist của ứng dụng của bạn

+0

Tôi cũng đã thử điều đó. Cửa sổ vẫn xuất hiện. – houbysoft

0

Trả về false trong phương thức NSDocument của lớp con 'windowNibName.

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