2010-02-11 4 views
3

새로운 Mac 응용 프로그램에서 작업 중이며 기본 설정 창을 열고 싶습니다. 주 Nib (xib) 파일 2 개, 기본 창 1 개, 기본 설정 창 1 개가 있습니다. 그런 다음 openPreferences 액션 - 환경 설정 윈도우를 보여줍니다. 같은 :Objective-C 환경 설정 창 makeKeyAndOrderFront 또는 showWindow?

- (IBAction)openPreferences:(id)sender 
{ 
    PrefCont *cont = [[PrefCont alloc] init]; 
    [cont showWindow:self]; 
} 

이 코드는 작동하지만, 내가 오픈 환경 설정 메뉴 항목에 다음 한 번 더 클릭하면, 다음 환경 설정 창은 두 번 두 번 이상 열립니다.

sth로 만들 가능성이 있습니까? makeKeyAndOrderFront와 같지만 PrefController가 호출해야합니까?

또는 Mac이 창이 열리면 요청할 수 있습니까? 그렇지 않다면, 그것을 보여 주거나 sth. 이것을 연결하십시오.

이것은 매우 도움이 될 것입니다. everbody 덕분입니다! 당신이 이중 창 증상을 피하려면

+0

Interface Builder에서 해당 창에 대한 "Visible at Launch"설정을 해제했는지 확인하십시오. –

답변

6

, 당신은 PrefCont * cont이 클래스의 바르을해야하고, 다음을 수행하십시오

- (IBAction) openPreferences:(id)sender { 
    if (cont == nil) { 
    cont = [[PrefCont alloc] init]; 
    } 
    [cont showWindow:sender]; 
} 

당신은 하나의 기본 컨트롤러를 생성 할 수 있습니다이 방법, 그리고 말할 하나는 창을 보여줍니다.

이 완료되면 [cont release];하는 것을 잊지 마세요 ...

+0

감사합니다,이 아이디어는 어제 밤에 나옵니다 : D 조 그리고 그 권리,하지만 정말 고마워요 :) – ahmet2106

5

더 좋은 방법이 PrefCont 클래스가하는 것이 싱글 루틴과 같은 :

+(PrefCont*)prefs 
{ 
    static PrefCont* prefs = nil; 
    if (!prefs) 
    prefs = [[PrefCont alloc] init]; 

    return prefs; 
} 

그리고 당신은 원할 때마다 환경 설정을 표시하려면

[[PrefCont prefs] showWindow:sender];