创建ViewStack时遇到问题,在ViewStack中有一个转发器和其他组件(即vBox)。转发器放置在视图的底部。尽管转发器在其他组件之前列出,但它位于底部。
是否有解决方法,我可以在其他组件之前绘制转发器?
我用Google搜索了这个,其他人在另一个网站上问了同样的问题,但没有人回答。我正在粘贴帖子中的示例代码。转发器最后被绘制。
由于
以下是一个例子:
<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>
答案 0 :(得分:2)
我认为问题出在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个转发器子项,并添加新子项。这将保留Tab键顺序:
¦ Static 1 ¦ Static 2 | From Repeater ¦ From Repeater ¦ From Repeater ¦
我注意到您已将organizeViewStack
方法连接到repeatEnd
事件处理程序 - 尽管未显示该方法的代码。
这看起来是管理这种情况的最佳方式 - 一旦孩子们被安排就重新调整他们的顺序。
答案 1 :(得分:0)
我猜了一下,但是
所有ViewStack的孩子都必须是一个容器。 Repeater不是容器。因此,它作为ViewStack子项的位置是无关紧要的,因为对于所有意图和目的,它被忽略。
但是,当转发器执行时,它会创建一堆容器并将它们添加到父级(AKA ViewStack);从而为他们提供了与您对代码的期望不同的Z顺序。
您是否正在尝试创建ViewStack的许多不同子项?或者您是否期望以某种方式堆叠“DynamicFieldEditors”?