nativescript tabview actionbar嵌套

时间:2018-02-15 14:04:47

标签: navigation nested android-actionbar nativescript tabview

我有4个标签,我使用路由器插座进行导航"在每个标签内。 我想问你是否可以为每个标签创建不同的操作栏,如果你可以在选项卡中导航也改变标题和操作栏的项目

2 个答案:

答案 0 :(得分:0)

您无法为每个标签保留单独的操作栏,但您可以在标签之间切换时尝试更新操作栏。

答案 1 :(得分:0)

我通过为四个标签的每个组件创建一个操作栏并根据所选标签在所需标签中导航来解决,例如:

public onIndexChanged(args) {
    let tabView = <TabView>args.object;
    if(tabView.selectedIndex == 0){
        this.title = this.test;
        this.routerExtensions.navigate(['tabs',
            {
                outlets: {'test': ['test'],
            }
        }], { 
            clearHistory: true 
         });
    }
    else if(tabView.selectedIndex == 1){
        this.title = this.test1;
        this.routerExtensions.navigate(['tabs',
            {
                outlets: {'test1': ['test1'],
            }
        }], { clearHistory: true });
    }
    else if(tabView.selectedIndex == 2){
        this.title = this.test2;
        this.routerExtensions.navigate(['tabs',
            {
                outlets: {'test2': ['test2'],
            }
        }], { clearHistory: true });
    }
    else if(tabView.selectedIndex == 3){
        this.title = this.notifications;
        this.routerExtensions.navigate(['tabs',
            {
                outlets: {'test3': ['test3'],
            }
        }], { clearHistory: true });
    }
    else if(tabView.selectedIndex == 4){
        this.title = this.settings;
        this.routerExtensions.navigate(['tabs',
            {
                outlets: {'test4': ['test4'],
            }
        }], { clearHistory: true });
    }
}

然后在每个标签中我有其他动作栏的其他视图。更改选项卡时,历史记录将被取消,因此,如果我返回之前打开的选项卡,则会重新创建该选项卡,然后再次更新操作栏。

我发现的唯一问题(我认为这是一个错误)是(在Android上)删除路由器插座的历史记录不起作用。

修改

我必须传递一个随机参数,以允许我要离开的组件调用OnDestroy方法,这样当我返回选项卡时我会离开它,它会重新创建包括操作栏在内的所有内容

this.routerExtensions.navigate(['tabs',
        {
          parameterForOnDestroy: true
        },
        {
            outlets: {'test': ['test'],
        }
    }], { 
        clearHistory: true 
     });