Я считаю, что проблема в том, что dataProvider
устанавливает / изменяет значение.
Это не показано в коде выше, поэтому это трудно понять. Однако всякий раз, когда значение этого параметра изменяется, существующие дочерние элементы, созданные ретранслятором, удаляются из родительского элемента и добавляются новые.
Если дочерние элементы ViewStack уже созданы, то дочерние элементы из репитера будут размещены после существующих дочерних элементов.
Например:
<mx:TabNavigator width="500">
<mx:VBox label="Static 1" />
<mx:Repeater dataProvider="{['a','b','c']}">
<mx:VBox label="From repeater" />
</mx:Repeater>
<mx:VBox label="Static 2" />
</mx:TabNavigator>
В этом случае dataProvider устанавливается во время инициализации ретранслятора, поэтому вкладки отображаются в следующем порядке:
¦ Static 1 ¦ From Repeater ¦ From Repeater ¦ From Repeater ¦ Static 2 ¦
Однако, если значение dataProvider изменяется (или dataProvider отправляет CollectionChangeEvent), тогда 3 дочерних повторителя будут удалены, и добавлены новые дочерние элементы. Это оставит порядок табуляции:
¦ Static 1 ¦ Static 2 | From Repeater ¦ From Repeater ¦ From Repeater ¦
Я заметил, что вы подключили метод organizeViewStack
к обработчику событий repeatEnd
- хотя код метода не показан.
Это выглядит как лучший способ справиться с этим - изменить порядок детей после того, как они были установлены.