我有一个Spark ButtonBar,我用ViewStack正确连接了它。目前,当我运行应用程序(AIR)时,默认情况下会选择ButtonBar中的第一个按钮。如何在默认情况下选择第二个按钮?
<mx:ViewStack id="viewStack">
<s:NavigatorContent id="Page 1">
<!-- Other stuff in here -->
</s:NavigatorContent>
<s:NavigatorContent id="Page 2">
<!-- Other stuff in here -->
</s:NavigatorContent>
</mx:ViewStack>
<s:ButtonBar dataProvider="{viewStack}" selectedIndex="1"></s:ButtonBar>
答案 0 :(得分:1)
我做了这个并且它运作良好。你确定selectedIndex无效吗?
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:ButtonBar
selectedIndex="2" width="400" height="300">
<s:dataProvider>
<s:ArrayCollection>
<fx:String>1</fx:String>
<fx:String>2</fx:String>
<fx:String>3</fx:String>
</s:ArrayCollection>
</s:dataProvider>
</s:ButtonBar>
</s:Application>
修改强>
这对你有帮助吗?
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init()">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.CollectionEvent;
[Bindable]
private var dataSource:ArrayCollection = new ArrayCollection();
private function init():void
{
dataSource = new ArrayCollection(new Array("1","2","3"));
dataSource.addEventListener(CollectionEvent.COLLECTION_CHANGE, collectionEventChange);
dataSource.dispatchEvent(new CollectionEvent(CollectionEvent.COLLECTION_CHANGE));
}
private function collectionEventChange(event:CollectionEvent):void
{
this.btnBar.selectedIndex = 2;
}
]]>
</fx:Script>
<s:ButtonBar id="btnBar" dataProvider="{dataSource}"
width="400" height="300" >
</s:ButtonBar>
</s:Application>
答案 1 :(得分:0)
您需要在组件初始化后设置所选索引,并在填充按钮栏后设置。按钮栏仅在检测到数据提供者的更改时才创建按钮(通过在绑定后附加一个changewatcher)。
这就是为什么Mr.修订后的答案包含在CollectionEvent侦听器中设置所选索引的原因。
更强大的解决方案是对按钮栏进行子类化并调整它,添加defaultSelectedIndex成员,或者创建一个可以将此功能添加到listbase的任何子类的mixin。 defaultSelectedIndex会在其dataprovider更改时将所选索引设置为指定值。