描かれていない名前の付いた別の Nib があると思いますCustomImageView
(Xcode によって自動的に作成されたもの)。その場合、コントロールと描画コードを別の Nib のビューに追加します。ビュー コントローラーのビューを実際にウィンドウに追加するには、AppDelegate からビュー コントローラーへの IBOutlet 接続を作成し、ビューを追加するときに次のコードを追加して、プログラムで行う必要がありますapplicationDidFinishLaunching:
。
[viewController.view setAutoresizingMask:(NSViewWidthSizable|NSViewHeightSizable)];
[viewController.view setFrame:NSInsetRect([window.contentView bounds], 20, 20)];
[window.contentView addSubview:viewController.view];
これにより、スクリーンショットのように中央に配置されます。問題はview
、MainMenu Nib で接続を作成することにより、別のCustomImageView
Nib で接続をオーバーライドしていることです。ウィンドウの Custom View オブジェクトを削除できます...カスタム ビューをプログラムで追加する必要があります。そのように機能すればよいのですが、そうではありません。
編集:
ニブがアーカイブ解除される順序のためです。最初に CustomImageView がインスタンス化され、そのすべての接続が確立されます。この時点で、view
プロパティは正しく設定されています。次に、MainMenu はプロパティを再度フックし、別の Nib でプロパティをview
オーバーライドします。view
現在、ビュー プロパティが正しく設定されていません。それは正常な動作です。別の nib を使用している場合は、それを未接続のままにして、View Controller のビューをコードに追加する必要があります。
別の方法は、別の Nib を使用しないことです。プロジェクトから削除し、ビューインウィンドウを設定して、接続をそのままにしておきます。これで、コードを追加することなく、それを管理する別のビュー コントローラーを持つことができます。ビューが非常に複雑な場合、またはユーザーがメインウィンドウに異なるビューを選択できる場合のように、必要に応じて遅延ロードしたい場合にのみ、別の Nib が必要です。