2012-07-30 5 views
5

Ich möchte eine 3-Panel vertikal NSSplitView (sehr ähnlich wie Mail.app) implementieren. Ich bin mir nicht sicher, wo ich anfangen soll. Ich bin mir ziemlich sicher, dass ich eine NSSplitViewDelegate implementieren muss, aber ich bin mir nicht sicher, welche Methoden und/oder ihre Implementierungen.Wie implementiere ich ein NSSplitView mit 3 Fenstern mit minimalen und maximalen Größen?

Das Layout ich will, ist folgendes:

+----------+------------------+------------------------------------+ 
|   |     |         | 
|   |     |         | 
|   |     |         | 
|   |     |         | 
| Pane 1 |  Pane 2  |    Pane 3    | 
|   |     |         | 
|   |     |         | 
|   |     |         | 
|   |     |         | 
|   |     |         | 
+----------+------------------+------------------------------------+ 

ich die folgenden Einschränkungen für jede der Scheiben implementieren möchten:

  • Pane 1: Mindest 140pt. Maximum: 400pt.
  • Bereich 2: Minimum 250pt.
  • Bereich 3: Minimum 400pt.

Alle Zeiger würden sehr geschätzt werden.

+1

Ansichten hierarchisch sein können, so dass Sie sich anschauen sollten zwei Ebenen der Split-Ansicht zu machen: eine an der Spitze mit „Pane 3“ auf der rechten Seite und einer zweiten Split-Ansicht auf der linken Seite (das „Pane enthält 1 "und" Scheibe 2 "). Ich habe das nicht ausprobiert, aber es scheint der einfachste Weg zu sein, damit das funktioniert. –

+0

Großes Tutorial hier: http://www.youtube.com/watch?v=k3XLInzZIs8 – siekfried

Antwort

0

Ich vermute, dass Sie das gelöst haben. Wie auch immer, es gibt zwei Möglichkeiten. Die erste ist wie die obige Antwort, ziehen Sie eine Splitview, wo Sie wollen, und ziehen Sie eine zweite Splitview in einen der Container (Unteransicht der Splitview). Der Blick hierarchie ist wie

Window 
Window containerview 
     Splitview 
      Containerview_left | containerview_right 
            Splitview 
             Containerview_left | containerview_right 

Wenn Sie mit dem Code, dann erstellen Sie eine SPLITVIEW-, fügen Sie es als Subview des Fensters Ansicht. Dann erstellen Sie Splitview-Subviews, indem Sie sie mit [splitview addsubview] hinzufügen. Wenn Sie drei Subviews hinzufügen, haben Sie zwei Devices. Die Hierarchie ist anders.

Window Window containerview 
     Splitview 
      Containerview_ind(0)| Containerview_ind(1) | Containerview_ind(2) 

Dies bedeutet, wenn Sie eine Subview finden möchten, müssen Sie wissen, wie Sie es erstellt haben. Eigentlich

HTH

6

, inspiriert HTH mir eine dritte Möglichkeit im Interface Builder, um zu versuchen, und es stellt sich heraus schön zu arbeiten. Insbesondere werden durch Verschieben eines Trennzeichens keine unbeabsichtigten Änderungen an anderen Stellen vorgenommen, was leicht passieren könnte, wenn Sie die geteilten Ansichten verschachteln würden.

  • ein NSSplitView Sie Fenster hinzufügen,
  • hinzufügen NSView (eine benutzerdefinierte Ansicht, in IB) als Kind des Split View. Sie erhalten eine geteilte Ansicht mit drei, nicht zwei Unteransichten.

What it looks like in the IB Objects List

Das gleiche funktioniert, wenn Sie ein anderes NSSplitView als Kind hinzufügen würde, obwohl Sie müssen vorsichtig sein würde, wie die verschachtelten geteilten Ansichten gegenseitig beeinflussen. Das Bild oben zeigt, wie es im Interface Builder aussieht, das zweite zeigt das Ergebnis im Simulator.

The result

7

Um eine Mindestmenge sehen, die BESplitViewConstraintEnforcer Utility-Klasse wir erstellt erzwingen.

Übrigens: Wenn Sie das Verschachteln geteilter Ansichten vermeiden und stattdessen einen zusätzlichen Bereich im Interface Builder hinzufügen möchten, ziehen Sie die neue Ansicht in das geteilte Ansichtsobjekt, wie im folgenden Screenshot gezeigt.

Screenshot

Verwandte Themen