2014-02-06 3 views
0

, 내가 원하는 이것의 완료. 새 하위 뷰를 추가 할 수 있으며 컨테이너 뷰의 -updateConstraints이이를 식별하고 올바른 레이아웃 제약 조건을 추가하므로 다음에 레이아웃을 수행 할 때 창에 올바르게 배치됩니다. 또한, 화면에 패널을 놓는 NSWindowController 하위 클래스가 있습니다.다음 NSView -layout이 발생한 후에 어떻게해야합니까?</p> <ul> <li>창에 새 NSView의를 추가 한 다음 <li></li>는</li> </ul> <p>내가 각각의 절반이있는 NSPanel 그냥보기 아래에 위치 표시 : 사용자 이벤트에 대한 응답으로

불행히도 주문 문제가 있습니다. 내 패널의 컨트롤러는 어디에 놓을 지 결정하는 새로운 NSView의 frame 속성을 살펴 보았지만 메인 이벤트 루프를 반복하는 동안 -layout 메서드는 아직 호출되지 않았으므로 여전히 (0,0)에 배치됩니다.

(나는 기능이 두 가지를 분리하고, "패널을 만들" "보기를 추가"및 두 개의 별도의 사용자 이벤트를 요구할 경우에는 패널이 제대로보기 아래에 위치한다.)

방법이 있나요 NSPanel을 레이아웃 제약이있는 것처럼 NSView에 부착 하시겠습니까? 아니면 "윈도우 콘트롤러 같은 것들을해라."라고 말할 수있는 방법이 있는데, 그 다음에야 "-layout call"이 나옵니까?

답변

0

NSView의 수퍼 뷰에 제약 조건을 추가하자마자 -layoutSubtreeIfNeeded를 호출하면 즉시 배치되므로 패널을 추가하십시오.

NSPopOver를 사용하십시오. 특정 방법으로 그려 지지만 원하지 않을 수도 있습니다.

+0

완벽! 감사! – user3277676

+0

그리고 예, NSPopOver의'- showRelativeToRect : ofView : preferredEdge :'메소드에 대해서 생각해봤을 것입니다. 과거에는 NSPopOver를 사용했지만이 특별한 경우에는 말풍선 삼각형을 원하지 않습니다. – user3277676

관련 문제