2009-05-06 7 views

risposta

21

È possibile farlo utilizzando il metodo getTabAt() di TabNavigator che restituisce il pulsante che costituisce la scheda visiva. Puoi quindi impostare la proprietà visibile di quel pulsante. È un po 'complicato ottenere questa configurazione con un binding, ma è fattibile.

Si potrebbe anche considerare la disattivazione della scheda, che è possibile eseguire impostando abilitato sul figlio TabNavigator corrispondente (per il quale visibile non ha funzionato).

+2

Funziona bene, grazie. È inoltre necessario impostare includeInLayout sul pulsante. Ho finito per implementarlo con normali ascoltatori e non mi preoccupavo di provare a farlo con i binding. –

+0

Grazie per questo, ha avuto lo stesso problema oggi. –

1

Cosa intendi per nascondere? Se in realtà si intende rimuovere, quindi basta prendere la matrice che è legata ai dati in TabNavigator e rimuovere l'elemento applicabile da esso.

Se si desidera rimuoverli temporaneamente, creare un componente proprio che incapsuli TabNavigator e disponga di una matrice di schede rimosse e un array di schede reali. Quindi gestiscilo come ritieni opportuno.

+1

Intendo "non mostrare, temporaneamente". Rimuovendolo dal TabNavigator sembra eccessivo. Sarebbe bello farlo in un modo che usa solo i binding ... –

1

Si potrebbe voler controllare il progetto flexlib. Hanno un componente chiamato SuperTabNavigator che aggiunge molte funzionalità al Flex TabNavigator di base, comprese le schede nascoste (credo).

Se si deve creare il proprio componente, tuttavia, è un po 'più complicato. La cosa da sapere è che le "schede" sono in realtà dei pulsanti speciali, contenuti all'interno di un componente TabBar (il TabBar è quindi contenuto all'interno di TabNavigator). Quello che dovrete fare allora, è sottoclasse TabNavigator e avere alcune proprietà sulle vostre viste (ad esempio le tele, ecc. Che sono aggiunte a TabNavigator) che è associato alle proprietà visible e includeInLayout dei pulsanti TabBar.

In sostanza, ciò che avrete è qualcosa di simile:

BindingUtils.bindProperty(tabButton, "visible", view, "someProperty"); 
BindingUtils.bindProperty(tabButton, "includeInLayout", view, "someProperty"); 
0

Non so su TabNavigator, ma in altri contenitori, è possibile impostare la proprietà includeInLayout per false e verrà ignorato. Probabilmente hai ancora bisogno di combinarlo con visible.

0
var secondTab = tabNavigator.removeChildAt(0); 
Problemi correlati