2009-09-03 7 views
5

Tôi muốn kết hợp một ứng dụngDidFinishLaunching: vào đại diện ca cao của tôi. Làm thế nào tôi sẽ làm điều này ?? Trên iPhone SDK applicationDidFinishLaunching đã có trong ứng dụng đại biểu, nhưng khi thực hiện ứng dụng mac của tôi, tôi nhận thấy rằng không có.Đại biểu ứng dụng - Ca cao

Best Regards,

Kevin

Trả lời

6
- (id)init 
{ 
    if (self = super init]) { 
     [NSApp setDelegate:self]; 
    } 
    return self; 
} 

Bạn cũng có thể làm điều này trong Interface Builder; từ "File's Owner" trong MainMenu.xib, chỉ cần kéo cửa sổ "delegate" vào đối tượng của bạn. Tuy nhiên, bạn có thể cân nhắc sử dụng -awakeFromNib.

+2

Bạn đang thiếu một dấu ngoặc nhọn xung quanh 'siêu init' và bạn không đề cập rằng phương pháp' applicationDidFinishLaunching: 'phải được thực hiện bởi lớp ssame để làm cho nó làm việc. – MKroehnert

20

Kể từ Xcode 3.2, mẫu ứng dụng Mac cũng đi kèm với một đại biểu ứng dụng, đã được kết nối, có một phương thức như vậy.

Để thiết lập điều này trong một dự án được tạo trước Xcode 3.2, hãy tạo một lớp mới để đại biểu của bạn là một phiên bản. Tôi thường đặt tên là “AppDelegate”. Bạn sẽ làm điều này bằng cách kích chuột phải vào nhóm Classes và chọn “Add File”, sau đó chọn mẫu tệp lớp con Cocoa NSObject.

Mở tiêu đề bạn vừa tạo (AppDelegate.h). Cho nó bất kỳ biến thể hiện nào bạn muốn. Sau đó nhấn Go to Counterpart. Điều đó sẽ đưa bạn đến tệp triển khai (AppDelegate.m). Thêm phương thức cá thể applicationDidFinishLaunching: của bạn tại đây. Không giống như trên iPhone, đây là một phương thức xử lý thông báo, vì vậy nó cần một cá thể NSNotification chứ không phải một cá thể NSApplication.

Bây giờ hãy kết nối nó. Trong nhóm Tài nguyên, mở MainMenu.nib. Kéo một đối tượng từ cửa sổ Thư viện vào cửa sổ nib cấp cao nhất (một đối tượng có biểu tượng trong đó, chẳng hạn như Chủ sở hữu tệp và Phản hồi đầu tiên). Chọn đối tượng bạn vừa tạo và mở thanh tra Identity. Đặt lớp của đối tượng thành AppDelegate, khớp với tên bạn đã sử dụng trong Xcode. Nhấp chuột phải vào Chủ sở hữu tệp và kéo từ lối ra delegate của nó tới đối tượng mới của bạn.

Trong Xcode, thêm tuyên bố NSLog vào phương pháp applicationDidFinishLaunching: của bạn. Nhấn Save All, sau đó Build và Go. Chuyển về Xcode và mở Bảng điều khiển Debugger. Nếu bạn đã làm tất cả mọi thứ đúng và tôi đã không quên bất cứ điều gì, bạn sẽ thấy thông điệp tường trình ở đó.

+0

'mẫu ứng dụng Mac cũng đi kèm với ứng dụng đại biểu, đã được kết nối, có phương thức như vậy.' Không dành cho các ứng dụng dựa trên tài liệu ... – zakdances

+0

@yourfriendzak: Tốt. Nếu bạn muốn thêm ứng dụng ủy quyền cho một ứng dụng dựa trên tài liệu (vì một lý do nào đó), bạn sẽ cần thực hiện theo các hướng dẫn còn lại. –

0

Bạn có thiếu tệp ứng dụng ủy quyền hoàn toàn không? Dường như có một lỗi trong các kịch bản cài đặt Xcode (ít nhất là cho 3.2.1 trên Snow Leopard) cài đặt các mẫu dự án mới nhất trong thư mục sai. Mẫu cũ hơn cho dự án "Ứng dụng Cocoa" không chứa các tệp đại biểu.

Tôi đã giải thích những gì tôi đã phát hiện (và cách tôi "sửa") trong một bài đăng trên blog có tên là Fixing the Xcode Project Templates.

Chúc mừng, Graham