从Titanium IOS7中的另一个js文件关闭NavigationWindow(模态)

时间:2014-03-11 20:41:20

标签: titanium appcelerator titanium-mobile appcelerator-mobile titanium-alloy

我正在将当前项目迁移到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等价物?

1 个答案:

答案 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/