2010-04-23 4 views
0

J'ai 2 fenêtres l'une est l'en-tête [mainWindow] (-setMovableByWindowBackground:YES) et l'autre est le contenu [secWindow], enfant de l'en-tête, l'en-tête a un bouton pour cacher le contenu.Masquer une fenêtre enfant à partir de la fenêtre parente masquer toute l'application

[mainWindow addChildWindow:secWindow ordered:NSWindowBelow]; 
[mainWindow setMovableByWindowBackground:YES]; 
Code

pour cacher secWindow:

(IBAction) toggleSecondary: (id) sender; 
{ 
if ([secWindow isVisible]) { 
    [secWindow orderOut:self]; 
} else {   
    [secWindow orderFront:self]; 
} 
} 

Le problème est quand un coup de pouce sur le bouton, hide app, fenêtres principales et Sec et ne doivent cacher la [secWindow].

Répondre

3

Weel, j'ai trouvé une solution, je ne sais pas si c'est correct, mais ça marche pour moi.^_^

//get the mainWindow cordinates 
NSRect theFrame = [mainWindow frame]; 
NSPoint theOrigin = theFrame.origin; 
NSPoint pSecWin = theFrame.origin; 
//put secWin below mainWindow 
pSecWin.y = theOrigin.y - secHeight; 

(IBAction) toggleSecondary: (id) sender; 
{ 
if ([secWindow isVisible]) { 
    [mainWindow removeChildWindow:secWindow]; 
    [secWindow orderOut:self]; 
} else { 
    [secWindow setFrameOrigin:pSecWin]; 
    [mainWindow addChildWindow:secWindow ordered:NSWindowBelow];  
    [secWindow orderFront:self]; 
} 
} 

donc ce, merci de toute façon

+0

Cela m'a aidé, merci! Sur Snow Leopard, quand je commandais la fenêtre de l'enfant avant de la retirer, la fenêtre parent était également cachée - retirer l'enfant du parent avant de l'ordonner. Je n'ai pas vu le même problème sur Lion cependant. – user2067021

+0

merci. On dirait que SDK doit fournir un moyen simple de cacher et de montrer un enfant NSWindow .. Je ne pouvais pas le trouver .. Votre code fonctionne. –

Questions connexes