Sapui5 如何在sap.m.IContabar中突出显示所选选项卡?

Sapui5 如何在sap.m.IContabar中突出显示所选选项卡?,sapui5,Sapui5,亲爱的SAPUI5开发者: 我有一个sap.m.icontabar,当用户在页面之间切换时,我通过代码设置活动选项卡。我使用了以下代码: sap.ui.getCore().byId(this.createId("iconTabBar")).setSelectedKey("1"); 问题是它将所选选项卡正确切换到第一个选项卡。但它不会在显示它已被选中的选项卡下显示蓝线 请看以下图片: 按代码选择第一个选项卡时显示的内容: 但当我用鼠标按tab键时,图标下方会显示一条蓝线,如下所示: 正如@

亲爱的SAPUI5开发者:

我有一个
sap.m.icontabar
,当用户在页面之间切换时,我通过代码设置活动选项卡。我使用了以下代码:

  sap.ui.getCore().byId(this.createId("iconTabBar")).setSelectedKey("1");
问题是它将所选选项卡正确切换到第一个选项卡。但它不会在显示它已被选中的选项卡下显示蓝线

请看以下图片:

按代码选择第一个选项卡时显示的内容:

但当我用鼠标按tab键时,图标下方会显示一条蓝线,如下所示:


正如@Ash在评论中所说的,您需要调用
fireSelect
,但这只在用户首先打开第二个选项卡时起作用。如果用户在第一个选项卡上并在页面之间切换,则
fireSelect
无法正常工作。因此,您首先需要选择第二个选项卡,然后它几乎会一直工作

sap.ui.getCore().byId(this.createId("iconTabBar")).setSelectedKey("2");
sap.ui.getCore().byId(this.createId("iconTabBar")).setSelectedKey("1");
sap.ui.getCore().byId(this.createId("iconTabBar")).fireSelect();

正如@Ash在评论中所说的,您需要调用
fireSelect
,但这只在用户首先打开第二个选项卡时起作用。如果用户在第一个选项卡上并在页面之间切换,则
fireSelect
无法正常工作。因此,您首先需要选择第二个选项卡,然后它几乎会一直工作

sap.ui.getCore().byId(this.createId("iconTabBar")).setSelectedKey("2");
sap.ui.getCore().byId(this.createId("iconTabBar")).setSelectedKey("1");
sap.ui.getCore().byId(this.createId("iconTabBar")).fireSelect();

好的,我看了一下IconTabBar源代码,有些东西我真的不明白为什么,但下面是如何进行的:

调用IconTabBar.setSelectedKey(key)时,它调用IconTabHeader.setSelectedKey(key)

然后IconTabBarHeader在内部调用setSelectedItem(item,true)

此处的“true”很重要,参数在setSelectedItem函数中命名为“bAPIchange”,并用作fireSelect()的条件:


这就解释了为什么在您的案例中没有触发事件

好的,我查看了IconTabBar源代码,但有些东西我不太明白为什么,但下面是它如何进行的:

调用IconTabBar.setSelectedKey(key)时,它调用IconTabHeader.setSelectedKey(key)

然后IconTabBarHeader在内部调用setSelectedItem(item,true)

此处的“true”很重要,参数在setSelectedItem函数中命名为“bAPIchange”,并用作fireSelect()的条件:


这解释了为什么在您的案例中不触发事件

@Mehdi:this.createId()将为您的iconTabBar创建一个新ID。你能粘贴你的视图和控制器代码吗?我想你只需要在设置选择[sap.ui.getCore().byId(this.createId(“iconTabBar”))).fireSelect();]@RahulBhardwaj之后触发选择事件(尽管没有尝试),我的代码中唯一与选择选项卡相关的部分就是那行代码。您的评论是正确的,但与我的问题无关。@Ash谢谢您的回答,但我不知道为什么它不能一直正常工作。@Mehdi:this.createId()将为您的iconTabBar创建一个新ID。你能粘贴你的视图和控制器代码吗?我想你只需要在设置选择[sap.ui.getCore().byId(this.createId(“iconTabBar”))).fireSelect();]@RahulBhardwaj之后触发选择事件(尽管没有尝试),我的代码中唯一与选择选项卡相关的部分就是那行代码。您的评论是正确的,但与我的问题无关。@Ash谢谢您的回答,但我不知道为什么它总是不能正常工作。亲爱的@Ash,是的,它很好。但它只是启动
Select
功能。当用户首先选择第二个选项卡,然后尝试在项目之间切换时,该选项起作用。在这种情况下,当选择第一个选项卡并且用户在项目之间切换时,它不会为图标着色。因此,我认为马吉德的答案更有效。但是你的回答也很好。亲爱的@Ash,是的,这很好。但它只是启动
Select
功能。当用户首先选择第二个选项卡,然后尝试在项目之间切换时,该选项起作用。在这种情况下,当选择第一个选项卡并且用户在项目之间切换时,它不会为图标着色。因此,我认为马吉德的答案更有效。但你的答案也很好。