Скажи это вслух 10 раз раз:
Interface Builder мой друг.
Мне удалось собрать образец проекта, который делает именно то, что вы хотите сделать примерно через 5 минут, используя интерфейс Builder как часть процесса. http://www.markdouma.com/developer/ShowWindowWithRedView.zip.
Вы не можете показать представление, не помещая его сначала в окно; безусловно, самый простой способ сделать это - перетащить второе окно в Interface Builder, установить его, чтобы оно не было видимым при запуске, перетащить общий пользовательский вид NSView в окно, установить его класс как SRRedView (ваш красный подкласс). Как указано в d11wtq, вы переопределяете метод примитивного рисования NSView, как он показывает (хотя лично я предпочитаю NSBezierPath: -P).
В классе контроллера вы определяете IBOutlets, а затем подключаете их в Interface Builder. Это дает вам возможность ссылаться на важные части вашего интерфейса, чтобы вы могли манипулировать ими программно.
Я добавил один метод IBAction, который кнопка в главном окне подключена для вызова.Этот метод просто говорит во втором окне, чтобы показать себя.
- (IBAction)showWindowWithRedView:(id)sender {
[windowWithRedView makeKeyAndOrderFront:nil];
}
В 8 лет или более, что я делал программирования какао, я не думаю, что я когда-либо необходимо прибегнуть вручную создания окон и представлений. Всегда было намного быстрее загружать еще один файл nib, содержащий окна или представления, которые мне нужно отображать. Использование Interface Builder вместе с Xcode для создания вашего приложения немного отличается от того, как работают другие IDE. (В частности, когда вы упорядочиваете материал в Interface Builder, вы не генерируете код так же сильно, как вы создаете экземпляры объектов пользовательского интерфейса, а затем «замораживаете-сушаете» их в их нынешнем расположении в архив архива .nib. Когда вы запускаете приложение , они возвращаются к жизни. Или, по крайней мере, так я думаю об этом).
Купите книгу и изучите основы. Этого пути не будет. –