如何突出显示sap.m.IconTabBar中的选定选项卡?

时间:2016-12-29 13:54:28

标签: sapui5

亲爱的SAPUI5开发人员,

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

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

问题是它将所选标签正确切换到第一个标签。但它没有显示标签下的蓝线,表明它已被选中。

请查看以下图片:

当我按代码选择第一个标签时显示的内容:

enter image description here

但是,当我用鼠标按下标签时,它会显示图标下面的蓝线,如下所示:

enter image description here

2 个答案:

答案 0 :(得分:1)

正如@Ash在评论中所说,你需要调用hash,但这只是在第一个用户使用第二个标签时才有用。如果用户位于第一个选项卡上并在页面之间切换,则fireSelect无法正常运行。因此,您需要先选择第二个选项卡,然后几乎所有时间都可以使用。

fireSelect

答案 1 :(得分:1)

好的,我看了一下IconTabBar的源代码,还有一些我不知道的原因,但是这里是如何进行的:

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

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

这里的'true'很重要,参数在setSelectedItem函数中被命名为'bAPIchange',它被用作fireSelect()的条件:

if (!bAPIchange) {
    // fire event on iconTabBar
    if (bIsParentIconTabBar) {
        oParent.fireSelect({
            selectedItem: this.oSelectedItem,
            selectedKey: sSelectedKey,
            item: this.oSelectedItem,
            key: sSelectedKey
        });
    } else {
        // fire event on header
        this.fireSelect({
            selectedItem: this.oSelectedItem,
            selectedKey: sSelectedKey,
            item: this.oSelectedItem,
            key: sSelectedKey
        });
    }
}

这解释了为什么在您的情况下不会触发事件