如何在选项卡中弹出到父 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
我正在尝试将默认后退按钮替换为 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