2010-01-23 1 views
0

У меня есть TabNavigator, в котором есть несколько детей. Поток приложения позволяет пользователю покинуть экран с помощью этого TabNavigator, а затем вернуться. Когда это произойдет, метод, вызываемый при показе родительских наборов холста, выбралChild на первую вкладку. При фактическом тестировании TabNavigator возвращает текст на первой вкладке, но вкладка, которая подсвечена, представляет собой вкладку, на которой пользователь находился только перед отъездом.Flex TabNavigator: Когда экран оставлен и возвращен, selectedChild установлен, но панель вкладок подсвечивает неправильную вкладку

Вот некоторые псевдо-код, который выглядит примерно так, как у меня есть:

<mx:Canvas show="init()"> 
<mx:Script> 
<![CDATA[ 
    private function init():void { 
     menutabs.selectedChild = tab1; 
    } 
]]> 
</mx:Script> 
<mx:TabNavigator id="menutabs"> 
    <mx:VBox id="tab1" label="Tab 1"><mx:Label text="First Tab Text" /></mx:VBox> 
    <mx:VBox id="tab2" label="Tab 2"><mx:Label text="Second Tab Text" /></mx:VBox> 
    <mx:VBox id="tab3" label="Tab 3"><mx:Label text="Third Tab Text" /></mx:VBox> 
</mx:TabNavigator> 
</mx:Canvas> 

Итак, что я испытываю, например, собирается на другой холст с приложением, побывав на вкладке 2, затем возвращаясь к этому холсту, чтобы увидеть текст «Текст первой вкладки», но выделенная вкладка вверху - «Вкладка 2.» Я пробовал несколько вариантов внутри метода init() invalidateDisplayList, validateNow и т. Д. Без изменения результата.

Любые идеи приветствуются.

ответ

0

Я не располагал информацией. Мой метод init() делает больше, чем только selectedChild, и я думаю, что этот другой материал, который не обязательно должен запускаться каждый раз, был тем, что закручивало перерисовку вкладок. Поэтому я создал новый метод goHomeTab() для вызова show и вызываю метод init() только при инициализации. Теперь все кажется прекрасным. Благодарю.

0

Вы заметили, что 'selectedChild' является фактическим свойством ViewStack, а не TabNavigator? Поскольку TabNavigator можно рассматривать как ViewStack + TabBar, настройка selectedChild не влияет на TabBar.

Я предлагаю использовать 'selectedIndex', чем для установки selectedChild. Вы можете получить selectedIndex из самого контейнера, используя getChildIndex()

+0

К сожалению, когда я заменил menutabs.selectedChild = tab1; с menutabs.selectedIndex = 0; результат был тот же. – cobaltduck

1

Это та же проблема была обнаружена in this question Я так же страдала от одной и той же проблемы, и она, похоже, является ошибкой в ​​элементе управления TabNavigator Flex. Мне еще предстоит найти решение.

мне удалось найти временный обходной путь:

  • родителя TabNavigator, упомянутых в качестве Родителя, должен направить дополнительное событие скрыть на TabNavigator когда видимости Родитель является установите значение false и отправит событие hide на Родитель. Это приведет к перерисовке элемента управления, который устраняет перекрывающиеся области содержимого.
  • Родитель должен сбросить TabNavigator SelectedIndex до 0 в обработчике спрятать за Родитель.
  • Если у вас возникли проблемы с TabNavigator вкладок стайлинга при изменении видимости, вы можете использовать tabNavigator.notifyStyleChangeInChildren('tabStyleName',false) в шоу-обработчика для TabNavigator правильно перерисовывать вкладки стили.

Надеюсь, этого достаточно для покрытия ваших дел.

Смежные вопросы