Tôi đang làm việc trên ứng dụng dựa trên tài liệu Mac đầu tiên của mình.NSDocumentController currentDocument return nil
Tôi đã subclassed NSDocument
, reimplementing các phương pháp như
- (BOOL)readFromURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError;
- (BOOL)writeToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError;
- (void)makeWindowControllers;
Bộ điều khiển cửa sổ chính là một lớp con của NSWindowsController
, có chứa hai NSViewController lớp con.
Sự cố tôi đang gặp phải là tôi cần có quyền truy cập vào tài liệu hiện tại từ các trình điều khiển chế độ xem này. Những gì tôi làm là gọi
MyDocument *myDocument = [[NSDocumentController sharedController] currentDocument];
Lúc đầu, ngay sau khi bắt đầu ứng dụng, một tài liệu mới được tạo. Sau đó, cửa sổ chính và bộ điều khiển chế độ xem của nó được tạo, nhưng phương thức trên trả về nil. Dưới đây là các bản ghi (sử dụng NSLog) tôi nhận được:
Just created this new document: <MyDocument: 0x10040ff10>
I'm in a view controller and current document is (null)
Sau đó, tạo ra một tài liệu mới và gọi phương pháp này kết quả trong một con trỏ không bằng không, nhưng nó không trỏ vào tài liệu đúng, nhưng cho người đầu tiên:
Just created this new document: <MyDocument: 0x100437e10>
I'm in a view controller and current document is <MyDocument: 0x10040ff10>
Lưu ý rằng sau khi tạo tài liệu thứ hai, currentDocument
trỏ đến tài liệu đầu tiên và không chuyển sang tài liệu thứ hai.
Bất kỳ ý tưởng nào về những gì tôi thiếu hoặc làm sai ở đây? Khi nào là currentDocument
được đặt cho NSDocumentController
?
Cảm ơn, nhưng tôi đã thử điều đó và tôi vẫn nhận được kết quả là không. Tôi cũng không chắc chắn về những gì "không hoạt động" có nghĩa là cho Apple, nhưng trong trường hợp của tôi nó xảy ra ngay sau khi bắt đầu ứng dụng. Không kéo và thả, không có gì đặc biệt. – msoler