如何在选项卡中弹出到父 window?

How to pop to the parent window in a tab?

我正在尝试将默认后退按钮替换为 Titanium iOS 项目中的自定义图像按钮。

我正在使用以下代码在选项卡中打开多个 windows:

currentTab.open(childWindow);

如何"pop"回到上一个(父级)window?

我尝试了以下方法:

childWindow.close();

和:

currentTab.close(childWindow);

但两者都不行。我做错了什么?

如果不检查实际代码,很难说你这边出了什么问题。然而,这是一段代码,它完全符合您的要求。它允许在一个选项卡中打开两个 windows。第二个 window 上的 onclick 侦听器关闭此 window。它反过来触发第一个 window 出现。可能有助于发现代码中的问题。

这里是index.js的内容:

$.index.open();

var tabGroup = Titanium.UI.createTabGroup();

var win1 = Titanium.UI.createWindow({title: 'Window 1'});
win1.add(Titanium.UI.createLabel({text: 'Window 1'}));
var button1 = Titanium.UI.createButton({bottom: 0, title: 'Next'});
win1.add(button1);

button1.addEventListener('click', function (e) {
    var win2 = Titanium.UI.createWindow({title: 'Window 2'});
    win2.add(Titanium.UI.createLabel({text: 'Window 2'}));
    var button2 = Titanium.UI.createButton({bottom: 0, title: 'Back to Window 1'});
    win2.add(button2);

    button2.addEventListener('click', function (e) {
        win2.close();
    });

    tab.open(win2);
});

var tab = Titanium.UI.createTab({title: 'Tab 1', window: win1});
tabGroup.addTab(tab);
tabGroup.open();

注意:index.xml这个例子的文件可以非常简单:只有一个空元素Window class="container"

Andrew 的回答很有帮助,我用 win.close() 函数调用解决了这个问题。

出现以下错误的原因:

Undefined is not a variable.

是因为我试图使用错误的引用访问 window 变量。

this.backButton.addEventListener("click", function() {
 this.win.close();
});

this.win 是子 window 的变量,我愚蠢地在 backButton 事件侦听器中使用了相同的变量,其中 this 被识别为回调函数,它给了我上面的错误。

只需将其更改为以下内容即可。

_this = this;
this.backButton.addEventListener("click", function() {
 _this.win.close();
});

他们在 Ti SDK 6.2

中添加了一个名为 popToRootWindow 的方法

参考:http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.Tab-method-popToRootWindow