2012-02-15 6 views
0

경고 대화 상자를 시트로 실행 중입니다. 문제는 시트가 답을 얻을 때만 프로그램 실행을 계속하려는 것입니다. 그래서 애플에서 기본 모달 코드를 추가 :모달 시트 및 모달 리턴 값

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

이 내 코드는 매우 깨끗했다,하지만 한 가지 문제가있다 : 나는이 작업을 수행 할 경우, 시트는 더 이상 메뉴 표시 줄의 앞에받지 않습니다 (I이었다 그 효과를 얻으려면 NSStatusWindowLevel 사용).

누구에게 해결책이 있습니까? 끝난 선택자를 피하고 싶습니다. 왜냐하면 코드가 매우 엉망이되기 때문입니다. 감사!

답변

3

나는 동일한 문제가 있었고 세션 루프에서 창 수준을 설정해야 작동한다는 것을 알았습니다. 귀하의 경우 :

NSModalSession session = [NSApp beginModalSessionForWindow:aWindow]; 
for (;;) { 
    [mySheet setLevel: NSStatusWindowLevel]; 
    if ([NSApp runModalSession:session] != NSRunContinuesResponse) 
    break; 
} 
[NSApp endModalSession:session];