创建ViewStack时出现问题,在ViewStack中使用中继器以及其他组件(即vBox)。中继器放置在视图的底部。尽管中继器在其他组件之前列出,但它位于底部。

有没有一种解决方法,可以在其他组件之前绘制中继器?

我用谷歌搜索,其他人在另一个网站上问了同样的问题,但没有人回答。我正在从他们的帖子中粘贴示例代码。中继器最后绘制。

谢谢

这是一个例子:

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

最佳答案

我相信问题是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事件处理程序-尽管未显示该方法的代码。

这似乎是管理此问题的最佳方法-一旦设置好孩子,就重新排列他们的顺序。

关于apache-flex - 带有中继器的Flex ViewStack-中继器位于底部,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3631388/

10-11 17:29