2014-04-25 5 views
1

사용자보기 컨트롤러 클래스가 있습니다. 여러 개의 사용자 지정보기 컨트롤러를 인스턴스화하고 NSStackView에보기를 추가하려고합니다. 단추를 클릭하여 스택보기에 새보기를 추가합니다. 버튼이 메소드를 호출 : 새로운 뷰를 추가 할 때 그러나NSStackView는 최신 사용자 정의보기 만 표시합니다.

[stackView insertView:myCustomViewController.view atIndex:0 inGravity:NSStackViewGravityBottom]; 

는, 그것은 이전보기가 어디에 아래 stackView.spacing을 추가하지,하지만 그 이전보기 그러나 그것은 여전히에서보기로 나열되어 더 이상 볼 수 있습니다 내가 NSButton의 추가하려고하면 나는이 문제가 없습니다

NSLog(@"%lu",(unsigned long)[stackView viewsInGravity:NSStackViewGravityBottom].count); 

전화, 그래서 내 사용자 지정보기 함께 할 수있는 뭔가있어하지만 난 알아낼 수없는 경우 입증 내 바닥 중력.

도와주세요. 감사!

답변

2

사용자 정의보기에는보기의 높이를 완전히 정의하는 제약 조건 (또는 내장 된 내용 크기)이 있는지 확인해야합니다. 그렇지 않은 경우, 이러한 견해는 0 높이로 무너지고 있습니다 (이 같은 일은 이전에 저에게 일어났습니다).

이에 의해 일어나는 경우가 확인할 수 있습니다 StackView와

[stackView insertView:myCustomViewController.view atIndex:0 inGravity:NSStackViewGravityBottom]; 
[stackView layoutSubtreeIfNeeded]; 
NSLog(@"%f - %d", NSHeight(myCustomViewController.view.frame), [myCustomViewController.view hasAmbiguousLayout]); 


, 당신은 나중에 사람들이 "- 1 0"을 인쇄하는 것을 볼 수 있습니다. 높이는 0이고 모호합니다.

수직 NSStackView의 경우에만 위치는 세로로 표시되지만 특정 높이는 표시되지 않습니다. (수평 스택보기 및 너비와 동일).