2017-01-17 2 views
0

kann nicht versteckt werden Ich habe eine geteilte Ansicht, die wie folgt aussieht:NSSplitView-Teiler

| Quelle | Filter | Liste | Detail |

Ich mag programmatisch die Filter verstecken, so in meinem NSSplitView Delegaten ich

verwenden
-(BOOL)splitView:(NSSplitView *)splitView shouldHideDividerAtIndex:(NSInteger)dividerIndex 

den Filterbereich auszublenden ich verwende

[[[[self splitView] subviews] objectAtIndex:1] setHidden:YES]; 
[[self splitView] adjustSubviews]; 

Vor Versteck: enter image description here Nach Versteck: enter image description here

Ich habe die Teiler rot in meiner Subcla gemacht ss, um leichter zu sehen, was passiert. Beide Teiler sind immer noch da - direkt nebeneinander, aber der rechte Teil sollte komplett verschwinden.

Ist dies passiert, weil ich versuche, eine Subview zu verstecken, die nicht am Rande ist? Vielleicht funktioniert es nur für den Index 0 und max?

Wie kann ich das schaffen?

Antwort

0

Sie wollen wahrscheinlich die richtige Position des Teilers gerade auf:

splitView.setPosition(splitView.bounds.width, ofDividerAtIndex: 0) 

Und auch eine andere delegieren Methode überschreiben, Ihre Ansicht zu ermöglichen kollabiert:

func splitView(splitView: NSSplitView, canCollapseSubview subview: NSView) -> Bool { 
    //You may choose which view you allow to collapse here... 
    return true 
} 

func splitView(splitView: NSSplitView, shouldHideDividerAtIndex dividerIndex: Int) -> Bool { 
    return true 
} 

ich für Sie hier ein Testprojekt erstellt:

https://github.com/emankovski/CollapseSplitViews

+0

Vielen Dank dafür. Ich werde es mir ansehen. – Trygve

+0

Nein - das hat keinen Einfluss darauf. Ich habe auch ein Problem mit den Objekten in der minimierten Ansicht, die ihre Positionierungsbedingungen durcheinander gebracht haben, wahrscheinlich weil die Breite auf Null geht. – Trygve