Я предполагаю, что у вас есть отдельный Nib с именем CustomImageView
, который не отображается (тот, который автоматически создается XCode). В этом случае вы добавили бы свои элементы управления и чертежный код к представлению в этом отдельном Nib. Чтобы фактически добавить это представление контроллера представления к окну, вам нужно сделать это программно, установив соединение IBOutlet из AppDelegate с контроллером представления и добавив следующий код, когда вы хотите добавить представление: (обычно в applicationDidFinishLaunching:
)
[viewController.view setAutoresizingMask:(NSViewWidthSizable|NSViewHeightSizable)];
[viewController.view setFrame:NSInsetRect([window.contentView bounds], 20, 20)];
[window.contentView addSubview:viewController.view];
Это поместит его вставку и по центру, как у вас на скриншоте. Проблема заключается в том, что, создавая соединение view
в вашем Nib MainMenu, вы переопределяете соединение в отдельном * Nib * *. Вы можете удалить объект пользовательского вида в своем окне ... вам придется добавить свой пользовательский вид программным способом. Было бы хорошо, если бы это работало таким образом, но это не так.
EDIT:
Это из-за того, что перья разархивированы. Сначала создается экземпляр CustomImageView, и все его соединения устанавливаются. На этом этапе свойство view
установлено правильно. Затем MainMenu снова подключает свойство view
, переопределяя свойство view
в отдельном Nib. Теперь свойство view установлено неправильно. Это нормальное поведение. Если вы используете отдельный кончик, вы должны оставить его не подключенным и добавить представление контроллера представления в коде.
Альтернативой может быть не использовать отдельный Nib. Просто удалите его из своего проекта, настройте вид в окне и оставьте соединение как есть. Теперь вы можете иметь отдельный контроллер представления, управляющий им, без добавления какого-либо кода. Вам действительно нужен отдельный Nib, только если представление очень сложное или если вы хотите загружать его лениво по мере необходимости, например, если пользователь может выбрать разные представления для главного окна.