/ / Flex ViewStack z przekaźnikiem - Repeater zostaje umieszczony na spodzie - flex, repeater, viewstack

Flex ViewStack z wzmacniaczem - Repeater jest umieszczony na dnie - flex, repeater, viewstack

Mam problem podczas tworzenia ViewStack, zrepeater wraz z innymi komponentami (tj. vBox) wewnątrz ViewStack. Repeatery zostaną umieszczone na dole widoku. Pomimo, że repeater jest wymieniony przed innymi komponentami, jest umieszczony na dole.

Czy istnieje obejście, w którym można uzyskać repeater narysowany przed innymi komponentami?

Przeszukałem go i ktoś inny zadał to samo pytanie na innej stronie, ale nikt nie odpowiedział. Wklejam przykładowy kod ze swojego wpisu. Wzmacniacz jest wyciągany na końcu.

Dzięki

Oto przykład:

<mx:ViewStack id="viewStack" width="100%" height="100%" backgroundColor="#FFFFFF"
backgroundAlpha="1" paddingLeft="5" paddingRight="5" paddingBottom="5">

<mx:Repeater id="editorsRP" dataProvider="{dynamicFields}"
repeatEnd="organizeViewStack();" width="100%" height="100%">

<editor:DynamicFieldEditor label="{FieldGroup(editorsRP.currentItem).name}"
width="100%" height="100%" fields="{FieldGroup(editorsRP.currentItem).fields}" dataProvider="{details}" />

</mx:Repeater>

<editor:NotesEditor id="notesEditor" width="100%" height="100%" label="Notes"
enabled="false" notesProvider="{attachment}" />

</mx:ViewStack>

Odpowiedzi:

2 dla odpowiedzi № 1

Uważam, że problem polega na tym, że dataProvider ma ustawioną / zmienioną wartość.

Nie jest to pokazane w powyższym kodzie, więc jest trudnewiedzieć. Jednak zawsze, gdy wartość tego zostanie zmieniona, istniejące dzieci utworzone przez repeater zostaną usunięte z rodzica, a nowe zostaną dodane.

Jeśli dzieci programu ViewStack zostały już utworzone, wówczas dzieci z repetytora zostaną umieszczone za istniejącymi dziećmi.

Na przykład:

 <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>

W tym przypadku parametr dataProvider jest ustawiany podczas inicjowania repeatera, więc karty pojawiają się w kolejności:

¦ Static 1 ¦ From Repeater ¦ From Repeater ¦ From Repeater ¦ Static 2 ¦

Jednak jeśli wartość dataProvider ulegnie zmianie(lub dataProvider wywoła kolekcję CollectChangeEvent), wtedy 3 przekaźniki potomne zostaną usunięte i dodane zostaną nowe dzieci. Zostawiłoby to kolejność tabulacji:

¦ Static 1 ¦ Static 2 | From Repeater ¦ From Repeater ¦ From Repeater ¦

Zauważyłem, że jesteś podłączony organizeViewStack metoda do repeatEnd obsługa zdarzeń - chociaż kod metody nie jest wyświetlany.

Wygląda to na najlepszy sposób zarządzania tym - przetasowanie kolejności dzieci po ich ustawieniu.


0 dla odpowiedzi nr 2

Zgaduję trochę, ale

Wszystkie dzieci należące do ViewStack muszą być kontenerem: Repeater nie jest kontenerem, więc umieszczenie go jako dzieci w ViewStack jest nieistotne, ponieważ do wszystkich celów i celów jest ignorowane.

Jednakże, gdy wykonywany jest repeater, tworzy grupę kontenerów i dodaje je do rodzica (AKA ViewStack); dając im inną kolejność Z niż to, czego można się spodziewać po kodzie.

Próbujesz stworzyć wiele różnych dzieci w ViewStack? A może spodziewasz się, że "DynamicFieldEditors" zostaną jakoś ułożone?