Pregunta

I am migrating a current project to 3.1.3 . I need a close button on the modal window so i had to use a NavigationWindow as suggested in the IOS7 migration guide. Here is what i have

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();
}
}

Now on paymenttransaction.js i was previously doing this when i was using titanium 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);
}

The problem i am facing is that i need to close winNav in the case of IOS and not win anymore. In paymenttransaction.js i was previously using

var mainWindow = Ti.UI.currentWindow;

But now i need to close the navigation window(winNav) and this does not hold good anymore. Is there anyway to do this? . Is there a Ti.UI.currentWindow equivalent for NavigationWindow ?

¿Fue útil?

Solución

You aren't using the navigationWindow properly. You shouldn't be calling open() on a window when you use one.

You are looking for:

`winNav.openWindow(yourWindow)

Also when you are creating a new window, pass a pointer to your navigationWindow in the constructor, then you can close the window properly. Don't create a window like that use CommonJS's require() to return your window:

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;

Then in your previousWindow:

PaymentTransactionWindow = require('/paymentTransactionWindow); //the filename minus .js
var paymentTransactionWindow = new PaymentTransactionWindow(winNav, null);
mainNav.openWindow(paymentTransactionWindow);

watch some of the videos on commonJS: http://www.appcelerator.com/blog/2011/08/forging-titanium-episode-1-commonjs-modules/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top