Bonsoir,
Je souhaiterai créer plusieurs "page" contenant une List (spark), pour celà , j'utilise un ViewStack que je rempli de NavigatorContent (mes pages) que je rempli ensuite d'une List., tout ça de façon dynamique, sans recourir au mxml (à part pour le ViewStack). Le code est donc le suivant :
L'appel de la fonction "ajouter" crée le code qui est comanté a l'intérieu du ViewStack.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 <fx:Script> function ajouter():void { var id = 6; //[...] var liste:List = new List(); var nav:NavigatorContent = new NavigatorContent(); nav.name = "tab_"+id; liste.name = "msg_"+id; liste.itemRenderer = new ClassFactory(itemRenderer.message); liste.setStyle('skinClass', Class(skin.message)); nav.addElement(liste); tabs.addChild(nav); } function ecrire(str:String):void { var nav:DisplayObject = tabs.getChildByName("tab_"+uid); var liste:List = ??? // J'ai testé nav.getChildAt, getChildByName ect.. rien ne semble fonctionner liste.dataProvider.addItem({'message':str}); } </fx:Script> <mx:ViewStack id="tabs"> <!--s:NavigatorContent> <s:List id="test" itemRenderer="itemRenderer.message" skinClass="skin.message"> </s:List> </s:NavigatorContent--> </mx:ViewStack>
Ma question : comment puis-je compléter la troisième ligne de la fonction "ecrire" pour arriver a accéder a ma liste ??? Je galère sur ce "détail" depuis quelques jours, et j'aimerai bien arriver a comprendre le fonctionnement de la navigation dans du mxml crée a la volé sans avoir recours aux id.
Et est-ce que le fait de skinner ma liste peut pauser problème pour naviguer dans le mxml ? J'ai remarqué que si je caste le premier retour de getChildByName en UIComponent, après un getChildAt(0) sur le résultat j’obtiens ça "[..].tabs.tab_6.SkinnableContainerSkin97" alors que je m’attendais plutôt a ça "[..]..tabs.tab_6.msg_6".
Bonne fin de soirée, ou bon début de semaine.
Partager