Предотвращение ViewStack от изменения индекса - PullRequest
0 голосов
/ 07 января 2012

У меня есть ViewStack с кучей NavigatorContainer. Каждый NavigatorContainer содержит различные категории настроек для приложения.

Я хотел бы иметь возможность отображать всплывающее окно, предлагающее пользователю, если они пытаютсяоставьте текущий NavigatorContainer без сохранения изменений, которые они внесли в настройки контейнера.

Идеальным было бы что-то вроде «изменения» в компоненте «Список», благодаря которому вы можете отменить или отложить событие.Вызов метода warnDefault () для события изменения в ViewStack не предотвращает изменение индекса.

Есть ли способ сделать это с минимальным количеством прыжков?

Спасибо

Ответы [ 2 ]

3 голосов
/ 09 января 2012

Это зависит от того, что меняет ваш стек просмотра.Например, если у вас 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>
0 голосов
/ 07 января 2012

Если с изменением индекса не происходит ничего страшного, почему бы не сохранить текущий индекс, а затем в событии изменения просто выдвинуть их назад и дать предупреждение?

...