Flex mobile: автоматически отображать кнопку «Назад», если представление не является первым в стеке

В Flex 4.5 для мобильных устройств можно проверить, есть ли> 1 представление в стеке навигации, и соответственно отобразить кнопку «Назад»? Если да, то как я могу это сделать?

Мое приложение основано на

  s:ViewNavigatorApplication

Я добавляю кнопку «Назад», как это

  <s:navigationContent>
    <s:Button label="Back" click="backButtonPressed(event)"/>
  </s:navigationContent>

person Sam    schedule 19.11.2011    source источник


Ответы (3)


Где-то в вашем представлении вы должны сделать что-то вроде этого:

if(navigator.firstView == this){
  Back.visible = false;
} else {
  Back.visible = true;
}

Дополнительные сведения о свойстве firstView . Вы можете запустить этот код в viewActivate в представлении. Или, возможно, во время запуска жизненного цикла создания представления, используя событие инициализации.

person JeffryHouser    schedule 19.11.2011
comment
Спасибо! Я думаю, чтобы сделать этот общий, я мог бы поместить его в суперкласс представления, от которого я наследую. Вы также знаете, можно ли и как создать подкласс ViewNavigator для инкапсуляции того же поведения? - person Sam; 19.11.2011
comment
Я не знаю, что тебе нужно знать, правда. Просто создайте подкласс ViewNavigator. Добавьте кнопку «Назад» как часть содержимого навигации. Добавьте туда этот код как-нибудь. Расширьте класс View, чтобы использовать новый пользовательский класс ViewNavigator. Вам нужно будет изучить код фреймворка для уточнения деталей. - person JeffryHouser; 19.11.2011

Я хотел бы обрабатывать такое поведение в кнопке «Назад»:

установите в компоненте кнопки: enabled="{navigator.selectedIndex!=0}"

Я думаю, что переплет выглядит намного лучше, и его легче поддерживать.

person kyohiro    schedule 21.11.2011
comment
Для ViewNavigator нет свойства navigator.selectedIndex. - person Sam; 21.11.2011
comment
Я думаю, мне придется использовать visible={classOf(navigator.activeView) != navigator.firstView}, чтобы кнопка «Назад» полностью исчезла. У меня есть еще одна проблема с моим решением создания представления суперкласса, в котором состояния могут быть созданы только в базовом представлении. Это означает, что если я создам базовое представление, содержащее функциональность кнопки «Назад», я не смогу использовать состояния портретной/ландшафтной ориентации в производном представлении. - person Sam; 21.11.2011
comment
Извините, что у меня нет опыта работы с гибкими мобильными приложениями, поэтому я дал вам неверный ответ. Я не совсем уверен в вашем вопросе, почему производное представление не может иметь состояния? Производное представление может привязывать свои состояния к базовому представлению или наоборот. - person kyohiro; 21.11.2011
comment
Не могли бы вы дать мне фрагмент кода, показывающий, как заставить производное представление привязывать свои состояния к состояниям базовых представлений? - person Sam; 21.11.2011
comment
В производном представлении ‹fx:Binding source=(parent as BaseType).currentState destination=this.currentState/› - person kyohiro; 21.11.2011

по крайней мере, во flex 4.6 эту процедуру можно сделать так:

<s:Button label="Back" visible="{navigator.length>1}"/>
person Gustavo Parrado    schedule 17.09.2012