【问题标题】: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】:
如果索引更改没有发生任何可怕的事情,为什么不保留当前索引,然后在更改事件中将它们弹出并发出警报?