2012-04-12 13 views
2

자식 NSViewController에서 NSWindowController의 요소에 액세스 할 수 있습니까?자식 NSView/ViewController를 통해 NSWindow의 요소에 액세스

기본적으로 NSWindow의 아래쪽 구석에 회전하는 NSProgressIndicator가 있습니다. 내 WebView가 NSViewController 대신 NSWindowController에 있기 때문에 작동합니다.

지금은 로직을 분해하고 싶지만 View Controller에서 이러한 요소에 액세스하는 방법을 이해하는 데 문제가 있습니다.

감사합니다.

+0

귀하의 질문에 혼란이 있습니다. NSWindowController의 "요소"는 무엇을 의미합니까? 'WebView'는'NSWindowController' 나'NSViewController'에서 "in"이 아닙니다. NIB에서 컨트롤러 중 하나가 소유하고로드 한 NIB를 의미합니까? 당신은 "This works because because ..."라고 말합니다. "this"는 무엇을 나타 냅니까? 여기서 "작품"은 무엇을 의미합니까? –

+0

나는 내 ViewController에서 나오는 IBOutlet에 내 창 xib에서 뭔가 (이 경우 NSProgressIndicator)를 연결할 수 있기를 원합니다. – arooo

답변

1

NIB의 콘센트를 다른 NIB의 콘센트에 연결할 수 없으므로 디자인에 문제가 있음을 나타냅니다. 보기가 창에있는 다른 항목과 너무 밀접하게 연결되어 있다면 다른 NIB로 분리해서는 안됩니다.

뷰는 독립형 단위로 이해되는 경우 별도의 NIB로만 이동해야합니다. 그것은 컨트롤러의 representedObject을 대표하고 조작해야하며 그 이상은 아닙니다. 컨트롤러에는 수행중인 작업에 대한 정보를 제공하고 사용자 정의 의사 결정을 수행하도록 요청하는 대리인이있을 수 있습니다.

그런 종류의 디자인을 채택하면 별도의 NIB를 계속 사용할 수 있습니다. 아마도 윈도우는 어떤 모델 객체에 대한 참조를 가질 것입니다. 모델 객체를 표현 된 객체로 사용하도록 View Controller를 구성합니다. 그리고 아마도 진행 지표는 같은 모델 객체에 묶여있을 것입니다. 그런 다음보기가 표현 된 오브젝트를 조작 할 때 간접적으로도 진행 표시기에 영향을줍니다.

또 다른 옵션은 윈도우 컨트롤러가 뷰 컨트롤러의 위임자로 설정되고 뷰 컨트롤러가 적절한 지점에서 뷰 컨트롤러를 호출하여 뷰에서 진행중인 사항을 알릴 수있는 옵션입니다. 그런 다음 창 컨트롤러는 진행 상태 표시기 또는보기 외부의 창에있는 다른 항목에 적절한 작업을 수행 할 수 있습니다. 이 가상 대리자는 뷰 컨트롤러 클래스에 추가해야하는 프로토콜이며 프로토콜을 디자인합니다.