2012-02-15 3 views
0

Я запускаю диалоговое окно с предупреждением в виде листа. Проблема в том, что я хочу продолжить выполнение программы, когда лист получит ответ. Поэтому я добавил код модальный по умолчанию от Apple:Модальные листы и модальные возвращаемые значения

NSModalSession session = [NSApp beginModalSessionForWindow:aWindow]; 
for (;;) 
    if ([NSApp runModalSession:session] != NSRunContinuesResponse) 
     break; 
[NSApp endModalSession:session]; 

Это сделало мой код очень чистый, но есть одна проблема: если я сделаю это, лист не будет получить в передней части панели меню больше (я был используя NSStatusWindowLevel, чтобы получить этот эффект).

У кого-нибудь есть решение? Я хочу, чтобы избежать селекторов, поскольку они делают код очень грязным. Благодаря!

ответ

3

У меня была такая же проблема, и я обнаружил, что мне нужно установить уровень окна в цикле сеанса, чтобы он работал. В вашем случае что-то вроде:

NSModalSession session = [NSApp beginModalSessionForWindow:aWindow]; 
for (;;) { 
    [mySheet setLevel: NSStatusWindowLevel]; 
    if ([NSApp runModalSession:session] != NSRunContinuesResponse) 
    break; 
} 
[NSApp endModalSession:session]; 
Смежные вопросы