我正在将当前项目迁移到3.1.3。我需要在模态窗口上关闭一个按钮,所以我必须按照IOS7迁移指南中的建议使用NavigationWindow。这就是我所拥有的
btnSubscription.addEventListener('click', function(e) {
Ti.API.info('Subscription Button Clicked.');
openWindow("paymentsubscription.js", "Subscription");
});
function openWindow(url, title) {
var win = Ti.UI.createWindow({
url : url,
backgroundColor : 'white',
modal : true,
title : title
});
if (Titanium.Platform.osname !== "android") {
var winNav = Ti.UI.iOS.createNavigationWindow({
modal: true,
window: win
});
}
if (Titanium.Platform.osname !== "android") {
winNav.open();
}
else {
win.open();
}
}
现在在paymenttransaction.js上,当我使用钛2.x
时,我之前就这样做了var mainWindow = Ti.UI.currentWindow;
var mainWinClose = Ti.UI.createButton({
style : Ti.UI.iPhone.SystemButtonStyle.DONE,
title : 'close'
});
if (Titanium.Platform.osname !== "android") {
mainWinClose.addEventListener('click', function() {"use strict";
mainWindow.close();
});
responseWindow.setRightNavButton(responseWinRightNavButton);
mainWindow.setRightNavButton(mainWinClose);
}
我面临的问题是,我需要在IOS的情况下关闭winNav而不再获胜。在paymenttransaction.js我之前使用
var mainWindow = Ti.UI.currentWindow;
但现在我需要关闭导航窗口(winNav),这不再适合了。反正有没有这样做? 。是否有针对NavigationWindow的Ti.UI.currentWindow等价物?
答案 0 :(得分:0)
您没有正确使用navigationWindow。当你使用窗口时,你不应该在窗口上调用open()。
您正在寻找:
`winNav.openWindow(yourWindow)
另外,在创建新窗口时,在构造函数中将指针传递给navigationWindow,然后可以正确关闭窗口。不要创建像这样的窗口使用CommonJS的require()来返回窗口:
paymenttransaction.js:
function paymentTransactionWindow(navGroup, otherArgs) {
var mainWinClose = Ti.UI.createButton({
style : Ti.UI.iPhone.SystemButtonStyle.DONE,
title : 'close'
});
var win = Ti.UI.createWindow({
url : url,
backgroundColor : 'white',
modal : true,
title : title,
rightNavButton: mainWinClose
});
if (Titanium.Platform.osname !== "android") {
mainWinClose.addEventListener('click', function() {
navGroup.closeWindow(win);
});
return win;
}
module.exports = paymentTransactionWindow;
然后在你以前的窗口:
PaymentTransactionWindow = require('/paymentTransactionWindow); //the filename minus .js
var paymentTransactionWindow = new PaymentTransactionWindow(winNav, null);
mainNav.openWindow(paymentTransactionWindow);
观看commonJS上的一些视频:http://www.appcelerator.com/blog/2011/08/forging-titanium-episode-1-commonjs-modules/