Frage

Ich bin ein Flex-Neuling. Ich brauche einige der Registerkarten in einer Flex Tabbar angegeben, durch Konfiguration zu deaktivieren. Ich habe Probleme in der Tab-Leiste über die Registerkarten laufen. Wenn i getChildAt () Befehl verwenden, nicht deaktiviert es die Registerkarte Taste, aber der Inhalt dieser Register-Taste, so dass sie nicht gut.

Danke und Gruß, Mohit Ranka

War es hilfreich?

Lösung

Wenn es um Code zu fragen, immer schreibt einen minimalen Testfall. getChildAt() funktionieren wird, so gibt es noch etwas anderes mit Ihrem Code geht.

<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>

Andere Tipps

warum nicht ein bindable Ihrer Konfiguration verwenden?

so etwas wie

   enabled="{yourConfiguration.lastResult.enabled}"

Für diejenigen, die eine Arbeits Antwort wollen für Flex 4.5 (wahrscheinlich Flex 4 auch). Ich dachte, endlich eine Lösung aus. Es fühlt sich an wie ein Hack zu mir, aber Adobe hat nicht den Anruf anzunehmen und es funktioniert für mich. Hier ist ein vereinfachtes Beispiel.

<!-- 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... -->

Dann einfach Sie setTabEnabled(theTabIndex,trueFalse) in einem Event-Handler rufen in Bezug auf was auch immer entscheidet, warum die Registerkarte ist oder nicht, aktiviert.

I sollte die TabBar erweitern, dies zu unterstützen, aber ich habe schon genug Zeit versuchen, es herausfinden.

ausgegeben

Happy Coding = D

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top