Sapui5 如何在sap.m.IContabar中突出显示所选选项卡?
亲爱的SAPUI5开发者: 我有一个Sapui5 如何在sap.m.IContabar中突出显示所选选项卡?,sapui5,Sapui5,亲爱的SAPUI5开发者: 我有一个sap.m.icontabar,当用户在页面之间切换时,我通过代码设置活动选项卡。我使用了以下代码: sap.ui.getCore().byId(this.createId("iconTabBar")).setSelectedKey("1"); 问题是它将所选选项卡正确切换到第一个选项卡。但它不会在显示它已被选中的选项卡下显示蓝线 请看以下图片: 按代码选择第一个选项卡时显示的内容: 但当我用鼠标按tab键时,图标下方会显示一条蓝线,如下所示: 正如@
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
功能。当用户首先选择第二个选项卡,然后尝试在项目之间切换时,该选项起作用。在这种情况下,当选择第一个选项卡并且用户在项目之间切换时,它不会为图标着色。因此,我认为马吉德的答案更有效。但你的答案也很好。