2011-03-02 4 views
2

내 응용 프로그램이 단일 문서이지만 여러 개의 창을 사용하지 않고 여러 개의 화면을 갖기를 원합니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까? 하나의 NSPersistentDocument를 사용하여 NSViewController로 시작하여 일련의 컨트롤을 표시 한 다음 다른 NSViewController에 대해 해당 뷰를 바꿀 생각입니다.NSViewController를 사용해야합니까?

제 질문은 NSViewControllers를 올바르게 사용하고 있습니까? 심지어 할 수 있습니까? 그리고 양쪽 모두에 대한 대답이 '예'일 경우 문서에서 다른보기를 어떻게 바꿀 수 있습니까?

답변

7

네, 할 수 있습니다. 예,보기 컨트롤러를 사용해야하지만 그렇지 않아도됩니다. 그것은 엄격한 문체 선택입니다. 뷰 컨트롤러를 사용하지 않으면 모든 컨트롤러 로직이 단일 창 컨트롤러에있을 가능성이 높습니다. 그것은 큰 응용 프로그램에 고통 스러울 수 있습니다. 뷰 컨트롤러는 UI를 논리적 구성 요소 및 컨트롤 유닛으로 분류하는 데 도움이됩니다. 당신은 다음과 같이 뷰 컨트롤러 방법을하기에 관하여 가고 싶어

:

  • 는 구성 요소 뷰의 각각에 대해 별도의 xibs을 만듭니다.
  • 각 xib에 대해로드, 소유 및 제어하는보기 컨트롤러 하위 클래스를 만듭니다.
  • 더 자세히 살펴보고 뷰 내의 별도 영역에 하위보기 컨트롤러가있을 수 있습니다.
  • 윈도우 컨트롤러의 awakeFromNib 클래스에서 모든 최상위 뷰 컨트롤러를 인스턴스화하십시오.

이제 최상위 레벨보기 컨트롤러가 여러 개인 앱용 기본 프레임 워크가 있습니다. 여기에서 작업은 필요에 따라 또는 사용자 입력이 지시하는대로 기본 창에서보기를 정렬하는 것입니다. 때로는 3-4 개의 최상위 뷰가 1 일 때로는 1 일 수도 있고, 경우에 따라서는 다른 최상위 뷰로 바꿀 수도 있습니다. 이러한 시나리오에는 큰 차이가 없습니다.

이렇게하려면 여러 가지 방법이 있습니다. 특정 사례를 들어

, 그것에 대해 이동하는 쉬운 방법은 다음과 같습니다

  • 는 최상위 tabless 및 여백 탭보기를 사용하여 프로그래밍 방식으로 선택한 탭을 설정합니다.일반적으로

당신은 일의 무리를 수행 할 수 있습니다

  • 수동으로 메인 윈도우의 내용보기의 하위 뷰를 배열합니다.
  • 필요에 따라 하위보기를 안으로 또는 밖으로 또는 표시 가능한 영역 내에서 이동 (애니메이션 처리)하십시오.
  • 주 창에서 분할보기를 사용하여 표시하려는 영역을 축소하거나 축소 할 수 있습니다.

BTW이 방법은 문서 기반 응용 프로그램을 만들지 여부와 상관없이 또는 단일 창 또는 다중 창 문서 기반 응용 프로그램인지 여부에 관계없이 작동합니다.

보기 컨트롤러를 사용하는 한 가지 단점은 최상위 수준의보기 레이아웃이며 관리는 IB가 아니라 프로그래밍 방식으로 수행되어야한다는 것입니다. 그러나 그렇게 어렵지 않습니다.

일반적으로 IB에서 이미 배치 한 상위 뷰에보기를 배치하려면 addSubview : 및 setFrame :을 수행하면됩니다.

그러나 더 복잡하고 수동적 인 작업을 수행하려면 문서를 읽고 프레임/경계, 뒤집힌 좌표, 자동 크기 조정 및 자신 만의 레이아웃을 수행하는 자동 크기 재 지정을 재정의하는 방법을 알아야합니다.

여러 뷰를 관리하는 NSNavigationController 사용에 대한 어떤
+0

참조로 여기에 내가하고 싶은 일이 있습니다. http://developer.apple.com/library/mac/#samplecode/ViewController/Introduction/Intro.html – ruipacheco

0

설명대로 수행 할 수 있지만 기본 구성이 단순함을 위해 하나의 문서 -> 하나의 컨트롤러 관계로 가정하기 때문에 문서와의 관계를 수동으로 관리해야합니다.

일단 표준 디자인에서 벗어나면 기본 제공 기능이 모두 손실됩니다.

디자인을 다시 생각해 볼 수도 있습니다. 특정보기 컨트롤러에 문서를 연결하는 목적은 사용자에게 문서에 대한 은유를 제공하는 것입니다. 보기 은 사용자가 염려하는 한 문서입니다. 동일한 문서에 대한 여러보기를 제공하는 경우 사용자는 UI 문법이 예상 한대로 훈련했기 때문에 여러 문서가있는 것으로 해석 할 가능성이 큽니다.

UI에서 비표준 작업을 수행 할 때 조심스럽게 생각하고 생각하십시오. 개발자가 무슨 일이 일어나고 있는지를 이해한다고해서 사용자가 의미하는 것은 아닙니다.

-2

- 그것은 쉽게 밀고 다양한 뷰를 간단하게 표시 할 수가 있습니다?

+0

UINavigationController를 의미합니까? iOS 용으로 개발하지 않습니다. – ruipacheco

+0

네가 맞아 - 내 잘못이야! 죄송합니다 – ferdil