كيفية تكرار عبر علامات التبويب في tabbar المرن

StackOverflow https://stackoverflow.com/questions/823816

  •  05-07-2019
  •  | 
  •  

سؤال

وانا مبتدئ المرن. أحتاج إلى تعطيل بعض علامات التبويب في tabbar المرن المحدد، من خلال التكوين. أواجه مشكلة في بالتكرار عبر علامات التبويب في شريط التبويب. إذا كنت تستخدم getChildAt () الأوامر، فإنه لا تعطيل زر التبويب، ولكن المضمون من أن زر التبويب، لذا ليس جيدا.

والشكر والتحيات، محيط رانكا

هل كانت مفيدة؟

المحلول

وعندما يسأل عن التعليمات البرمجية، إضافة دائما حالة اختبار الحد الأدنى. سوف getChildAt() العمل، ولذلك لا يوجد شيء آخر يحدث مع التعليمات البرمجية.

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

نصائح أخرى

لماذا لا تستخدم التي يمكن ربطها إلى التكوين الخاص بك؟

وشيء من هذا القبيل

   enabled="{yourConfiguration.lastResult.enabled}"

لأولئك الذين يريدون جوابا العمل لفليكس 4.5 (ربما فليكس 4 أيضا). أنا برزت أخيرا حل. فهو يبدو وكأنه الإختراق بالنسبة لي، ولكن أدوبي ليست الرد على المكالمة وانها تعمل بالنسبة لي. وهنا مثال مبسط.

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

وبعد ذلك كنت مجرد دعوة setTabEnabled(theTabIndex,trueFalse) في معالج أحداث تتعلق أيا كان يقرر ماذا التبويب هو، أو لا، تمكين.

أنا <م> يجب تمديد TabBar لدعم هذا، ولكن قضيت بالفعل ما يكفي من الوقت في محاولة لمعرفة ذلك.

وسعيد الترميز = D

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top