이것은 사실 두 부분으로 된 질문입니다. 내 설명이 분명해지기를 바랍니다.NSViewController의 뷰 내용은 초기화 방법에 따라 다릅니다.
뷰의 일부에서 다른 사용자 정의보기를 표시하도록 구성 할 수있는 NSViewController가 있습니다. 예를 들어 해당 뷰는 CustomViewA 또는 CustomViewB 중 하나를 표시 할 수 있습니다.
각 사용자 지정보기에 대해 NSViewController를 만들고 CustomViewA를 처리하는 NSViewController 또는 CustomViewB를 처리하는 NSViewController로 MyViewController를 초기화하여이 작업을 수행 할 수있었습니다. NSBox를 사용하고 주어진 NSViewController가 제공하는 뷰에 contentView를 설정합니다.
이 접근법의 문제점은 contentView가 "MyView"를 보유하고 NSView 내부에 CustomViewA 또는 CustomViewB를 보유 할 다른 NSBox를 보유한다는 것입니다.
또 다른 문제점은 MyViewController가 CustomViewA와 CustomViewB를 처리하고 각각에 대해 별도의 NSViewController를 가지고 있지 않다는 것입니다. 여기
내 현재 솔루션의 샘플 코드입니다 :
// How I initialize the NSViewControllers
CustomViewControllerA* cvc = [[CustomViewControllerA alloc] initWithNibName:@"CustomViewA" bundle:nil];
MyViewController* controller = [[MyViewController alloc] initWithCustomViewController:cvc nibName:@"MyView" bundle:nil];
//...
// In Controller of main view
- (void)awakeFromNib
{
// container is an NSBox*
[self.container setContentView:[self.myViewController view]];
}
//...
// In MyViewController
-(void)awakeFromNib
{
// content is an NSBox*
[self.content setContentView:[self.customViewController view]];
}
어떻게 할 수 있습니다 내 라이브 MyView.nib 그들 모두 자신의 컨트롤러로 MyViewController를 사용하여 내부 CustomViewA 및 CustomViewB?
NSBox 대신 기본보기에서 MyView를 유지하려면 어떻게해야합니까?
미리 감사드립니다.
// In MyViewController.m
- (void) awakeFromNib {
[self.view addSubview:[self.customViewController.view]];
}
을하고 MyViewController과 같은 매개 변수를해야합니다 :
감사합니다. 하나의 질문 비록 ... 사용자가 단추를 클릭하면 MyViewController가보기를 교체합니다. 난 단지 NSBox setCustomView 함께 이렇게하는 방법을 알고 : 이 방법은 어떻게 사용자의 클릭하면보기를 바꿀 수 있습니까? [self.view addSubview : ...]를 다시 호출 하시겠습니까? –
다소 차이가 있습니다.addSubview를 다시 호출 할 수 있지만 추가 한 원래 하위 뷰에서 [NSView removeFromSuperview]를 호출해야합니다. –