SDI (Single Document Interface) 문서 기반 코코아 응용 프로그램을 만드는 방법이 있습니까? 사용자가 여러 문서를 한꺼번에 열지 않기를 바랍니다.단일 문서 인터페이스 문서 기반 코코아 응용 프로그램
답변
Cocoa 응용 프로그램 템플릿을 기반으로 새로운 Xcode 프로젝트를 만들어 원하는 UI를 얻을 수 있어야합니다. "문서 기반 응용 프로그램 만들기"를 선택 취소하십시오.
자신이 열기/저장 명령을 작성하고 수업을 NSDocument
및 친구들과 변경해야하지만 할 수 있어야합니다.
이렇게해도 좋지만 나쁘지 않습니다.
일반적인 접근 방법 : 앱의 xib 인 싱글 톤 NSWindowController에 자신을 첨부해야하는 NSDocument를 사용하십시오. 문서가 열리지 않으면 그 창에 다른 것들이있을 수도 있습니다.
이이
이당신은을 사용하는 다른 창을 제거 : 내가 플레이의 모든 NSDocument 기능을 유지으로이 디자인 등등 ... 여기
좀 더 세부 간다, 나를 위해 좋은 작품 새 창이므로 Xcode에서 만든 앱 템플리트의 기본 항목을 제거하십시오. 아마도 MainMenu.xib에서 그 모든 것을 제거하거나 새 xib로 옮길 것입니다.(는 사용자가 볼 항상 것입니다 우리의 주요 창처럼) 당신의 미래 NSWindowController
그냥 나중에 우리는 그것에 더 많은 방법을 추가 할 것입니다, 테스트를위한 자리를 만들위한 새로운 XIB (창)를 만듭니다.
자신의 NSWindowController를 만들고, 그것을
그래서, 당신의 NSWindowController 안에, 당신의 XIB (한 번), 복귀가 호출이 하나의 싱글 언제든지로드 싱글 랩퍼를 작성 싱글합니다. 이
당신의 NSDocument 기반 문서로이 같은 추가 만이 단일 창에 부착하도록 https://gist.github.com/1057420이
+ (id) singletonInstance {
DEFINE_SHARED_INSTANCE_USING_BLOCK(^{
return [[self alloc] initWithWindowNibName:@"yourxibfilename"];
});
}
이 NSDocument 수정 : 나는 더 많은 정보를 원하시면 여기를 보면, 도우미 타입 #define을 사용했다. 기본적으로 당신은 가지고있는 싱글 톤 윈도우를 사용하도록 문서에 지시 할 것이고 NSWindowController 내부의 내부 setDocument는 그것이 보여주고있는 기존의 NSDocument를 대체하기 위해 자동으로 호출되어야합니다. - (void)makeWindowControllers {
ReceiptDocumentWindowController *wc = [ReceiptDocumentWindowController singletonInstance];
[self addWindowController:wc];
}
그냥 배회하지 않습니다 확인하기 위해 가까이에 NSWindowController에서 NSDocument을 제거하는 것이 좋습니다. 나는 이것이 어떤 경우에는 필요하다고 생각하지 않지만, 이것을 잘 조사 할 수도 있습니다. 그래서, 또한 NSDocument 문서 내부 : - (void)makeWindowControllers {
ReceiptDocumentWindowController *wc = [ReceiptDocumentWindowController singletonInstance];
[self addWindowController:wc];
}
- (void)close {
[self removeWindowController:[ReceiptDocumentWindowController singletonInstance]];
[super close];
}
테스트 - 당신은 지금과
이있을 것입니다 몇 가지 문제를 작업 프로토 타입 솔루션을해야한다, 그 모두는 당신의 정확한 요구 사항에 따라 달라집니다.
먼저, 새로운 NSDocumentController를 사용하여 열려있는 모든 문서를 자동으로 닫은 다음 새 문서를 여는 것이 좋습니다.이것에 대해 더 많이 연구해야합니다.
내가 언급 한 NSViewController로 돌아가서 "현재 열려있는 문서"로 업데이트하는 방법. NSWindowController에 NSWindowController에 몇 가지 접착제를 넣어 setDocument를 열어 모든 다운 스트림 IBOutlet에 연결된 xib 인스턴스 (예 : NSViewController)에 첨부 할 문서를 첨부합니다. 좋아,이 같은 : 이제
- (void)setDocument:(NSDocument *)lDocument {
[super setDocument:lDocument];
if (lDocument != nil && self.receiptDetailViewController != nil)
self.receiptDetailViewController.representedObject = lDocument;
}
, 내 NSDocumentViewController에서 표현 된 객체는 NSViewController.representedObject에 코코아 바인딩을 사용하여 바인딩보기가 있습니다. 그래서 빙고, 내 물건을 마법과 거의 비슷하게 만듭니다. 이렇게 캡슐화하는 것이 좋습니다. 그러면 xib의 뷰가있는 문서를 표시하는 데 중점을 둘 수 있으며 열려있는 모든 문서에 대한 참조가있는 NSViewController를 사용할 수 있습니다.
이것이 명확하지 않으면 알려주십시오. 더 많은 코드를 게시 할 예정입니다. 행운을 빈다. 도움이되는지 알려 주시기 바랍니다.
마커스 윌리 포드
깔끔한 조언을 해주셔서 감사합니다. 나는 이것을 나중에 시험해 볼 것이다! –
- 1. 코코아 문서 기반 응용 프로그램
- 2. 코코아 문서 기반 응용 프로그램
- 3. 코코아 단일 창에서 여러 문서
- 4. 코코아 문서 기반 응용 프로그램의 윈도우 변경
- 5. 코코아 문서 기반 애플리케이션의 MVC
- 6. 코코아 CoreData 및 비 문서 기반 응용 프로그램
- 7. .Net 여러 응용 프로그램 인스턴스지만 단일 문서
- 8. 코코아 문서 기반 문서를 더러움으로 표시하기
- 9. 기본 코코아 애플리케이션을 문서 기반 애플리케이션으로 변환
- 10. 응용 프로그램 용 문서
- 11. 파일 형식/확장자를 비 문서 기반 코코아 응용 프로그램에 연결
- 12. 코코아 문서 기반 응용 프로그램에서 저장이 성공적으로 이루어 졌는지 확인하십시오.
- 13. 코코아 문서 기반 응용 프로그램의 저장 기능 제거
- 14. 유창한 인터페이스 및 작업 기반 응용 프로그램
- 15. 문서 기반 응용 프로그램에서 응용 프로그램 시작시 코드를 실행하는 방법
- 16. 코코아 API 문서 다운로드
- 17. 코코아 icu 문서
- 18. 문서 기반 응용 프로그램의 메뉴 항목 연결
- 19. 코드 디자인 질문 : 문서 기반 응용 프로그램의 "문서 수준 클래스"
- 20. MVC로 문서 공유 응용 프로그램
- 21. 핵심 데이터 문서 기반 응용 프로그램 : 문서 당 한 번만 인스턴스화되는 엔터티를 모델링하고 제어하려면 어떻게해야합니까?
- 22. 간단한 웹 기반 문서 관리 응용 프로그램 - 워크 플로우 포함
- 23. Xcode에서 "문서 기반 응용 프로그램 만들기"옵션을 선택하면 어떻게됩니까?
- 24. 단일 문서 프로젝트 구조
- 25. java.lang.IllegalArgumentException가 : 문서 기반
- 26. 문서 기반 응용 프로그램에 로그인 창 추가
- 27. NSDocument * 클래스는 문서 기반 응용 프로그램에만 해당합니까?
- 28. COM 인터페이스 구현 자용 문서
- 29. 파일 문서 기본 응용 프로그램 복원
- 30. 코코아 문서 기반 앱 : 관찰자가 항상 알림을받지 못함
왜 이걸 원하니? 열려있는 단일 문서 만 지원하는 것은 일반적으로 권장되지 않으므로 그렇게하는 것이 쉽지 않습니다. –
내가 작성한 응용 프로그램은 GarageBand와 같은 음악 소프트웨어입니다. 한 번에 하드웨어에 액세스하는 데 제한이 있으므로 사용자가 여러 노래 파일을 한 번에 열지 못하게 할 수 있습니다. –