문제

탭 인터페이스를 통해 단일 창에 여러 문서가있을 수있는 응용 프로그램을 작성하고 싶습니다. NSDocument Architecture (Cocoa 문서 기반 응용 프로그램 템플릿)를 피해야합니까? 내가 알 수있는 한, 문서 당 하나 이상의 창만 지원하지만 그 반대는 아닙니다.

나는이 질문과 한동안 씨름 해 왔으며 NSDocument 아키텍처에서 이미 응용 프로그램의 많은 부분을 이미 구축했지만 여러 문서를 단일 창과 연결하는 좋은 방법을 찾을 수는 없습니다.

편집 : 기본 문서 창 외에 프로젝트 문서 창을 원합니다. 이 수준의 복잡성에서 여전히 NSDocument Architecture를 해킹 할 가치가 있습니까? Apple은 NSDocument Architecture를 사용하여 Xcode (이런 방식으로 작동)를 작성 했습니까?

도움이 되었습니까?

해결책

몇 년 전 NSDocument 앱을 단일 창 탭 인터페이스로 신발화하려고 시도했고, 몇 달 후에 너무 좌절감을 느꼈습니다. 불가능하지는 않지만 최종 결과가 적절한 NSDocument 앱과 거의 비슷하지 않은 많은 문제를 해결하게됩니다. 코코아 프레임 워크를 파괴하기 위해 많은 코드로 끝나는 것보다 필요한 비트를 다시 작성하는 것이 좋습니다.

다른 팁

나는 같은 종류의 프로젝트를 가지고 있습니다 - 단일 창에 제시하고 싶은 다른 독립 문서, 문서간에 전환 할 수있는 사이드 바가 있습니다. 그래서 약간의 검색을 수행했습니다.

나는 Cocoadev의 독서를 통해 흥미로운 리드를 발견했습니다. 모든 문서에 대한 하나의 창이있는 문서 기반 앱 참조. Miketrent의 답변에서 NSDocument를 사용하는 것은 매우 실용적인 방법 인 것으로 보입니다. 서브 클래스 NSDocumentController 만 있으면됩니다.

나도 좋아한다 아비의 아이디어 경계없는 어린이 창을 사용합니다.

이 경우 NSDocument 기반 아키텍처를 사용하는 것이 반드시 나쁜 생각은 아닙니다. 그러나 그것은 약간의 haquery가 필요할 수 있습니다.

서브 클래스 NSDocument뿐만 아니라 서브 클래스 형제 자매 NSDocumentController일지도 모릅니다. 이 작업이 완료되면 -makewindowcontrollers 및 기타 창 관련 방법에 대한 호출을 피하는 것이 간단한 문제 여야합니다. 기반 응용 프로그램.

아직 시도하지 않았지만 계획 한 또 다른 기술은 각 문서에 대한 경계없는 창을 갖는 것입니다. 이 방법으로 하나의 문서에는 하나의 창이 있으며, 이는 보이거나 보이지 않을 수 있습니다.

그런 다음 실제 창 테두리가 포함 된 래퍼 윈도우와 경계없는 문서 창/창을 볼 수있는 컨트롤이 표시됩니다. 문서 창은 래퍼의 자식 창으로 창을 이동/최소화/닫을 때 둘 다 연결되도록합니다.

각각의 테두리가없는 문서 창에 대해 래퍼 창에는 자리 표시 자 뷰가 있으며, 해제 될 때 문서 창을 크기를 조정하고 문서 창의보기를 응답자 체인에 주입합니다 (자리 표시 자보기로 전송 된 모든 이벤트는 문서로 전송됩니다. 자리 표시 자의 부모의 모습으로 전달되기 전에 창의보기).

아직 약간의 세부 사항이 있지만이 접근법은 잘 작동 할 것이라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top