2012-08-16 13 views
9

Wie kann ich die Startposition eines NSSplitView festlegen?Startposition des NSSplitView-Teilers

Das nächste, was ich gefunden habe, das wie es ist setPosition

//Set splitView position. 
[splitView setPosition:330 ofDividerAtIndex:0]; 

beginnt Dies scheint nicht alles zu tun, wenn auch mit dem Teiler in der Mitte, mein SPLITVIEW- noch funktionieren würde aussieht.

ANy Ideen?

Antwort

1

Vielleicht ist das das Zentrum? Wenn SplitView korrekt an Ihre Split-Ansicht angeschlossen ist, sollte dieser Code funktionieren. Sie sollten wahrscheinlich [splitView minPossiblePositionOfDividerAtIndex: 0] und [splitView maxPossiblePositionOfDividerAtIndex: 0] protokollieren, bevor Sie versuchen, die Position des Teilers festzulegen, damit Sie die möglichen Werte kennen.

+0

Ja, es ist nicht das Zentrum. Mein Min-Wert ist 0 und mein Max-Wert ist 999. – arooo

+0

Ich weiß nicht, was ich sagen soll - es hat gut für mich funktioniert. Ich frage mich, ob es etwas mit Constraints-Einstellungen zu tun hat? Ich zog einfach eine geteilte Ansicht heraus, fügte ein paar Schaltflächen und Textfelder auf jeder Seite hinzu (damit etwas zu sehen war) und fügte diese eine Codezeile hinzu. – rdelmar

+0

Es scheint, dass das Problem an anderer Stelle liegt. Ich habe eine Einstellung, die es einem Benutzer erlaubt, seine Standardansicht zu wählen. Wenn ich die Ansicht mit dem SplitView als Standard einstelle, dann ist der Split in der Mitte. Wenn ich eine andere Ansicht als Hauptansicht einstelle und mit der SplitView in die Ansicht klicke, funktioniert alles einwandfrei. Irgendeine Idee, was das verursachen könnte? – arooo

2

NSSplitView benötigt anfängliche nicht große Begrenzungen, um das Layout korrekt zu machen. Wenn Ihre Ansicht null ist, wird das erwartete Layout nicht angezeigt.

Der beste Weg ist die Bereitstellung von Layout ungleich Null (das ist, was IB tut), aber manchmal ist das unmöglich.

Wenn Sie keine Größe ungleich Null angeben können, dann denke ich, dass Sie eine geeignete - (void)splitView:(NSSplitView *)splitView resizeSubviewsWithOldSize:(NSSize)oldSize Delegiertenmethoden-Implementierung bereitstellen müssen, um alles manuell selbst zu gestalten. (Dies ist meine aktuelle Best Practice)

4

Sie legen die Position des Teilers nicht fest, Sie legen die Größen der NSSplitView-Teilansichten fest. Der Teiler wird dann automatisch neu positioniert. Diese

ist, wie ich meine Teiler und Subview Größe positioniert (in swift):

let subview: NSView = mySplitView.subviews[1] as NSView 
subview.setFrameSize(NSMakeSize(subview.frame.size.width, 100)) 
0

in der Klasse Gehäuse Ansicht der geteilten Ansicht

override func viewWillAppear() { 
    self.mySplitView.setPosition(120, ofDividerAtIndex: 0) 
} 

oder wo auch immer Sie es beginnen soll.

Verwandte Themen