2009-05-05 6 views
1

Je suis un débutant flexible. J'ai besoin de désactiver certains des onglets d'une barre de tabulation spécifiée, par configuration. J'ai du mal à parcourir les onglets de la barre d'onglets. Si j'utilise la commande getChildAt(), elle ne désactive pas le bouton de tabulation, mais le contenu de ce bouton de tabulation, donc ce n'est pas bon.Comment faire une itération sur les onglets de la barre d'onglet flex

Merci et salutations, Mohit Ranka

Répondre

3

Lorsque vous posez sur le code, toujours après un test minimal. getChildAt() fonctionnera, donc il y a quelque chose d'autre qui se passe avec votre code.

<mx:Script> 
    <![CDATA[ 
     import mx.events.ItemClickEvent; 
     import mx.controls.tabBarClasses.Tab; 
     private function clickTab(event:ItemClickEvent):void { 
      var target:TabBar = event.currentTarget as TabBar; 
      var currTab:Tab; 
      var parity:int = event.index & 1; 
      /* disable all tabs at indices w/ same parity as clicked tab; 
       enable tabs of opposite parity. 
      */ 
      for (var i=0; i<target.numChildren; ++i) { 
       currTab = target.getChildAt(i) as Tab; 
       currTab.enabled = (i&1)^parity; 
      } 
     } 
    ]]> 
</mx:Script> 

<mx:TabBar id="someTabs" itemClick="clickTab(event)"> 
    <mx:dataProvider> 
     <mx:String>Foo</mx:String> 
     <mx:String>Bar</mx:String> 
     <mx:String>Baz</mx:String> 
     <mx:String>Bam</mx:String> 
    </mx:dataProvider> 
</mx:TabBar> 
0

pourquoi ne pas utiliser un bindable à votre configuration?

quelque chose comme

enabled="{yourConfiguration.lastResult.enabled}" 
+0

parce que l'exigence est plus complexe que cela. goulot d'étranglement est je ne sais pas comment itérer sur les onglets dans la barre d'onglets. –

0

Pour ceux qui veulent une réponse fonctionnelle pour Flex 4.5 (probablement aussi Flex 4). J'ai finalement trouvé une solution. Cela ressemble à un hack pour moi, mais Adobe ne répond pas à l'appel et ça marche pour moi. Voici un exemple simplifié.

<!-- component that has the the TabBar in it... --> 

<fx:Script> 
    <![CDATA[ 
//imports here 

import mx.core.UIComponent; 

//imports 

private function setTabEnabled(index:int,enabled:Boolean):void{ 
    var theTab:UIComponent = theTabBar.dataGroup.getElementAt(index) as UIComponent; 
    if(theTab){theTab.enabled = enabled;} 
} 
]]> 
</fx:Script> 

<s:TabBar id="theTabBar" 
    dataProvider="{viewStack}"/> 

<mx:ViewStack id="viewStack"> 
    <s:NavigatorContent label="0th Tab"> 
     <!-- ...Content --> 
    </s:NavigatorContent> 
    <s:NavigatorContent label="1st Tab"> 
     <!-- ...Content --> 
    </s:NavigatorContent> 
    <s:NavigatorContent label="2nd Tab"> 
     <!-- ...Content --> 
    </s:NavigatorContent> 
</mx:ViewStack> 

<!-- rest of the component that has the the TabBar in it... --> 

Ensuite, vous appelez simplement setTabEnabled(theTabIndex,trueFalse) dans un gestionnaire d'événement lié à tout ce qui décide pourquoi l'onglet est, ou non, activé. Étendre le TabBar pour supporter cela, mais j'ai déjà passé assez de temps à essayer de le comprendre.

Codage heureux = D

Questions connexes