3

ViewStack 内の他のコンポーネント (つまり vBox) と一緒にリピーターを使用して、ViewStack を作成するときに問題が発生します。リピーターはビューの下部に配置されます。リピーターは他のコンポーネントの前にリストされていますが、一番下に配置されています。

他のコンポーネントの前にリピーターを描画できる回避策はありますか?

私はこれをグーグルで検索し、他の誰かが別のサイトで同じ質問をしましたが、誰も答えませんでした. 彼らの投稿からサンプルコードを貼り付けています。リピーターは最後に描画されます。

ありがとう

次に例を示します。

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

2 に答える 2

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 つのリピーターの子が削除され、新しい子が追加されます。これにより、タブオーダーが残ります。

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

メソッドのコードは示されていませんが、organizeViewStackメソッドをイベント ハンドラに接続していることに気付きました。repeatEnd

これは、これを管理する最良の方法のように見えます-設定されたら、子の順序を再シャッフルします。

于 2010-09-07T18:50:43.610 に答える
0

ちょっと推測ですが、

ViewStack のすべての子はコンテナーである必要があります。Repeater はコンテナーではありません。したがって、ViewStack の子としての配置は無関係です。これは、すべての意図と目的で無視されるためです。

ただし、リピーターが実行されると、一連のコンテナーが作成され、それらが親 (別名 ViewStack) に追加されます。したがって、コードから予想されるものとは異なる Z オーダーが与えられます。

ViewStack のさまざまな子を作成しようとしていますか? それとも、「DynamicFieldEditors」が何らかの方法でスタックされることを期待していますか?

于 2010-09-03T14:42:06.993 に答える