2009-05-06 4 views
6

Я пытаюсь написать программный эквивалент файла nib, который я установил, который содержит два окна: главное окно и лист, который появляется после запуска, чтобы запрашивать учетные данные. Проводка их в IB работает нормально, если помните, чтобы снять флажок «Видимый при запуске» на листе/окне.Программный эквивалент «Visible at Launch» для NSWindows

Однако я не могу понять, что эквивалентно API «Видимый при запуске». Когда я запускаю свое приложение с использованием программной версии, лист отделяется, а не ключ, так же, как мое приложение запускалось с помощью бандажа, когда был установлен флажок «Видимый при запуске». Поэтому мое предположение заключается в том, что я пропускаю секретный соус с видимым в запуске.

Кто-нибудь знает, как это сделать?

P.S. Я знаю, как сделать эту работу в IB, я специально хочу вычислить эквивалент кода, поэтому, пожалуйста, не говорите мне, чтобы просто использовать наконечник. Я знаю это.

ответ

2

NSWindows обычно создаются скрытыми. Поэтому вам не нужно ничего делать; просто не показывайте окно, пока оно вам не понадобится. Вот простой пример.

NSWindow *sheetWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100) styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:NO]; 
NSTextField *field = [[NSTextField alloc] initWithFrame: NSMakeRect(25, 25, 50, 50)]; 
[[sheetWindow contentView] addSubview:field]; 
[NSApp beginSheet:sheetWindow modalForWindow:[self window] modalDelegate:self didEndSelector:@selector(sheetDidEnd:) contextInfo:NULL]; 

Текстовое поле получило фокус клавиатуры при запуске выше.

В будущем, пожалуйста, предоставьте код в таких случаях - гораздо проще исправить существующий код, чем писать новый код.

+0

Николас, извините за отсутствие примера кода. У меня есть простой тестовый сценарий, поэтому теперь мне просто нужно выяснить, какие различия между моим рабочим тестом и моим фактическим кодом. Спасибо за вашу помощь! –

+1

Спасибо, джентльмены. Я просто столкнулся с той же проблемой, и разница, по-видимому, является типом самого окна. У меня была установка на NSBorderlessWindowMask, и это не сработало. Когда я изменил его на «NSTitledWindowMask», все работало как шарм! –

Смежные вопросы