2012-07-30 11 views
5

Desidero implementare una verticale a 3 riquadri NSSplitView (molto simile a Mail.app). Non sono davvero sicuro da dove cominciare. Sono abbastanza sicuro di aver bisogno di implementare uno NSSplitViewDelegate, ma non sono sicuro di quali siano i metodi e/o le loro implementazioni.Come implementare un NSSplitView a 3 pannelli con dimensioni minime e massime?

Il layout che voglio è la seguente:

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

Voglio realizzare i seguenti vincoli per ognuno dei riquadri:

  • riquadro 1: 140pt minimo. Massimo: 400pt.
  • Riquadro 2: minimo 250pt.
  • Riquadro 3: 400pt minimo.

Qualsiasi suggerimento sarebbe molto apprezzato.

+1

Le viste possono essere gerarchico per cui si potrebbe considerare la possibilità di due livelli di split-view: uno in alto con "Pane 3" sulla destra e un secondo split-view a sinistra (che contiene "Pane 1 "e" Riquadro 2 "). Non l'ho provato, ma sembra il modo più semplice per farlo funzionare. –

+0

Ottimo tutorial qui: http://www.youtube.com/watch?v=k3XLInzZIs8 – siekfried

risposta

0

Immagino che tu abbia risolto questo problema. Ad ogni modo, ci sono due modi. Il primo è come la risposta precedente, trascina uno splitview dove lo vuoi e trascina una seconda splitview all'interno di uno dei contenitori (sottoview dello splitview). Il hierarchie vista è come

Window 
Window containerview 
     Splitview 
      Containerview_left | containerview_right 
            Splitview 
             Containerview_left | containerview_right 

Se per codice, quindi si crea uno SplitView, aggiungerlo come visualizzazione secondaria della finestra, vista. Quindi si creano sottoview con splitview aggiungendoli usando [splitview addsubview] se si aggiungono tre sottoview, si hanno due deviders. La gerarchia è diversa.

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

Ciò significa che se si desidera trovare una sottoview, è necessario sapere come è stata creata.

HTH

6

In realtà, HTH mi ha ispirato a provare una terza possibilità in Interface Builder, e si scopre a funzionare a meraviglia. In particolare, lo spostamento di un separatore non apporta modifiche involontarie altrove, il che potrebbe facilmente verificarsi se si annidano le viste divise.

  • Aggiungi un NSSplitView a voi finestra,
  • Aggiungi un (una visualizzazione personalizzata, in IB) NSView come figlio del Split View. Si finisce con una visualizzazione divisa che ha tre, non due, subviews.

What it looks like in the IB Objects List

Le stesse opere se si desidera aggiungere un altro NSSplitView come un bambino, anche se avrebbe dovuto stare attento a come i nidificati vista divisa si influenzano a vicenda. L'immagine sopra mostra come apparirà nel generatore di interfacce, la seconda mostra il risultato nel Simulatore.

The result

7

per imporre una dimensione minima, controlla la classe di utilità BESplitViewConstraintEnforcer abbiamo creato.

A proposito: se si desidera evitare l'annidamento di viste divise e aggiungere invece un pannello aggiuntivo in Interface Builder, trascinare la nuova vista nell'oggetto di visualizzazione divisa, come mostrato nella schermata seguente.

Screenshot

Problemi correlati