これは実際には 2 つの部分からなる質問です。私の説明が明確であることを願っています。
ビューの一部に別のカスタム ビューを表示するように構成できる NSViewController があります。たとえば、そのビューは CustomViewA または CustomViewB のいずれかを表示できます。
カスタム ビューごとに NSViewController を作成し、CustomViewA を処理する NSViewController または CustomViewB を処理する NSViewController で MyViewController を初期化することで、これを機能させることができました。NSBox を使用し、その contentView を、指定された NSViewController によって提供されるビューに設定します。
このアプローチの問題は、contentView が「MyView」を保持する NSBox があり、「MyView」内に CustomViewA または CustomViewB を保持する別の NSBox があることです。
もう 1 つの問題は、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]];
}
CustomViewA と CustomViewB を MyView.nib 内に配置し、両方とも MyViewController をコントローラーとして使用するにはどうすればよいですか?
メイン ビューに NSBox ではなく MyView を保持させるにはどうすればよいですか?
前もって感謝します!