打开新窗口时钛标签会累积

时间:2014-05-06 16:05:40

标签: tabs titanium

我有一个行列表,如下所示: rows of courses

每当我点击一行时,都会创建一个新标签页,并在该标签页上添加一个新窗口,显示课程信息。

然后,如果我按回,它会返回到课程窗口,这很棒,但当我点击另一个课程时,它会将其添加到选项卡列表中,所以它开始如下所示:

Course Info tabs are accumulating

然而,此处应该只有两个标签,即“课程”标签和“获取课程”标签。


在get_courses.js(处理行的文件)中,我有这个事件监听器,每次单击一行时都会创建一个新选项卡(我确定这是我的错误所在,我不是确定如何解决它):

table.addEventListener("click",function(e){
    var courseInfo_window = Titanium.UI.createWindow({
        title:e.rowData.title,
        url:'get_courseInfo.js',
        courseIMISCode: e.rowData.courseIMISCode
    });

    var courseInfo_tab = Titanium.UI.createTab({
        title:'Course Info',
        window:courseInfo_window
    });
    Titanium.UI.currentTabGroup.addTab(courseInfo_tab); 
});

我想在那里创建一个“课程信息”选项卡,但是在get_courseInfo.js中我有这个,可能是多余的代码:

Ti.UI.currentTabGroup.activeTab.open(courseInfo_window);

其中,在我的Noob脑中似乎有必要打开我的courseInfo_window,但是正在积累底部的标签(如前图所示)。

TL; DR:我需要做什么(可能在get_courses.js中)更新“课程信息”标签,而不是为每行点击打开一个新标签?

1 个答案:

答案 0 :(得分:0)

您可以通过tabs property访问TabGroup中的标签页。但是,继续引用您在事件侦听器之外创建并在内部修改的选项卡会更容易:

var courseInfo_tab = null;

table.addEventListener("click",function(e){
    var courseInfo_window = Titanium.UI.createWindow({
        title:e.rowData.title,
        url:'get_courseInfo.js',
        courseIMISCode: e.rowData.courseIMISCode
    });
    if (courseInfo_tab === null) {
        courseInfo_tab = Titanium.UI.createTab({
            title:'Course Info',
            window:courseInfo_window
        });
        Titanium.UI.currentTabGroup.addTab(courseInfo_tab); 
    } else {
        courseInfo_tab.window = courseInfo_window;
    } 
});