我有一个Flex 3中的视图,其中我使用标签导航器和标签导航器中的一些视图。我需要知道哪个视图被点击是因为它是一个特定的视图,然后我需要采取行动,即如果点击带有id“secondTab”的视图,则执行一些操作。单击标签时访问标签导航器中的视图
我已经设置好通知,我的问题是我需要能够知道它是什么样的视图。调用tab.GetChildByName
或类似的方法似乎只让我回到TabSkin
对象。
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%"
height="100%"
xmlns:local="*"
creationComplete="onCreationComplete(event)">
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.controls.Button;
protected function onCreationComplete(event:Event):void {
for(var i:int = 0; i < myTN.getChildren().length; i++) {
var tab:Button = myTN.getTabAt(i);
tab.addEventListener(FlexEvent.BUTTON_DOWN, tabClickHandler);
}
}
private function tabClickHandler(event:FlexEvent):void {
var tab:Button;
if(event.currentTarget is Button) {
tab = event.currentTarget as Button;
// how do I access the actual view hosted in a tab that was clicked?
}
}
]]>
</mx:Script>
<mx:TabNavigator id="myTN">
<local:ProductListView id="firstTab"
label="First Tab"
width="100%" height="100%" />
<local:ProductListView id="secondTab"
label="Second Tab"
width="100%" height="100%" />
</mx:TabNavigator>
</mx:VBox>
如果您将事件对象包含在您的childChanged(event)处理函数中,它将包含一个relatedObject属性,该属性应该是选定的子项,如果您不想引用回选项卡导航器即: change =“childChanged(event)”和私有函数childChanged(event:IndexChangedEvent):void {if(event.relatedObject == ... – quoo 2010-05-19 14:20:49
谢谢,非常有帮助! – user278730 2010-05-19 15:11:59