2

我在这样的应用程序中有视图堆栈:

<mx:ViewStack id="viewStack" left="0" right="0" top="0" bottom="0">
    <views:LoginView top="0" bottom="0" right="0" left="0" id="loginView"/>
    <views:MainHomeView top="0" bottom="0" right="0" left="0" id="childSelectionView"/>
    <views:MainHomeView top="0" bottom="0" right="0" left="0" id="mainEvalView"/>
</mx:ViewStack>

当一个事件被触发时,我打电话viewStack.selectedChild = childSelectionView

我的问题是如何为被选中的 NavigatorConent 编写一个监听器?

这是我尝试做的事情:

<?xml version="1.0" encoding="utf-8"?>
<s:NavigatorContent xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:local="*" xmlns:mx="library://ns.adobe.com/flex/mx" 
    creationComplete="init()">

    <fx:Script>
        <![CDATA[
        private function init():void
        {
            // Do something here
            advanceButton.visablitiy = false;
        }
    ]]>
</fx:Script>
<s:VGroup>

    <s:HGroup>
        <s:Button label="Advance" id="advanceButton" />
    </s:HGroup>
</s:VGroup>

我知道所有 NavigatorConent 在应用程序启动时调度了一个 creationComplete 事件,但它们的子级尚未创建。我是如何响应 on selectedChild 更改为 self 的?

4

2 回答 2

1

有时花一点时间是值得的,从字面上看,你之前的问题正好在同一个问题域中。使用 FlexEvent.CONTENT_CREATION_COMPLETE 事件。

请参阅Flex 错误 #1009:无法访问空对象引用的属性或方法

于 2012-04-11T05:31:11.953 回答
0
<fx:Script><![CDATA[
    import mx.controls.Alert;
    import mx.events.IndexChangedEvent;

    protected function viewStack_childIndexChangeHandler(event:IndexChangedEvent):void {
        Alert.show('Selected Child: ' + viewStack.selectedChild.label);
    }

    ]]></fx:Script>

<s:layout>
    <s:VerticalLayout/>
</s:layout>

<s:ButtonBar dataProvider="{viewStack}"/>
<mx:ViewStack id="viewStack" change="viewStack_childIndexChangeHandler(event)">
    <s:NavigatorContent id="navigator1" label="Navigator 1">
        <s:Group>
            <s:Button label="N1"/>
        </s:Group>
    </s:NavigatorContent>
    <s:NavigatorContent id="navigator2" label="Navigator 2">
        <s:Group>
            <s:Button label="N2"/>
        </s:Group>
    </s:NavigatorContent>
</mx:ViewStack>
于 2012-04-11T10:04:31.293 回答