防止ViewStack改变索引

时间:2012-01-06 23:40:29

标签: actionscript-3 flex flex4 flex4.5

我有一个ViewStack,里面有一堆NavigatorContainer。每个NavigatorContainer包含一个不同类别的应用程序设置。

我希望能够显示一个弹出窗口,提示用户是否尝试离开当前的NavigatorContainer而不保存他们对容器设置所做的更改。

什么是理想的事情就像改变' List组件中的事件,您可以取消或推迟事件。在ViewStack中对change事件调用preventDefault()并不能防止索引发生变化。

有没有办法以最少的箍跳?

由于

2 个答案:

答案 0 :(得分:3)

这取决于更改视图堆栈的内容。例如,如果你有ButtonBar作为视图转换器,那么你可以像这样写:

        protected function btnBar_changingHandler(event:IndexChangeEvent):void
        {
            event.preventDefault();
            //enter code here
        }

    <s:VGroup width="100%" height="100%" horizontalAlign="center">
            <s:ButtonBar id="btnBar" dataProvider="{viewStack}" requireSelection="true" changing="btnBar_changingHandler(event)">
                <s:layout>
                    <s:ButtonBarHorizontalLayout gap="2" />
                </s:layout>
            </s:ButtonBar>
            <mx:ViewStack id="viewStack" width="100%" height="100%">
                <s:NavigatorContent width="100%" height="100%" label="First View">
                    <comp:FirstView/>
                </s:NavigatorContent>
                <s:NavigatorContent width="100%" height="100%" label="Second View">
                    <comp:SecondView/>
                </s:NavigatorContent>
            </mx:ViewStack>
    </s:VGroup>

答案 1 :(得分:0)

如果索引更改没有发生任何可怕的事情,为什么不保留当前索引,然后在更改事件中弹出它们并发出警报?