【问题标题】:Preventing ViewStack from Changing Index防止 ViewStack 改变索引
【发布时间】:2012-01-06 23:40:29
【问题描述】:

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

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

理想的情况是 List 组件中的“更改”事件,您可以借此取消或推迟该事件。在 ViewStack 中的 change 事件上调用 preventDefault() 不会阻止索引更改的发生。

有没有办法用最少的跳圈来做到这一点?

谢谢

【问题讨论】:

    标签: actionscript-3 apache-flex flex4 flex4.5


    【解决方案1】:

    这取决于是什么改变了您的视图堆栈。例如,如果你有 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>
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 把它们弹回来,我意识到也触发了一个改变
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      相关资源
      最近更新 更多