2014-05-13 99 views
1

我想打開一個新窗口並關閉它的父窗口,以便我不能返回到上一個窗口並保持應用程序更高效。鈦Appcelerator父窗口關閉新窗口以及

但是,在父窗口上調用close會導致新窗口關閉,無論我在打開新窗口還是之後調用它。 發生什麼事是新窗口正在打開,然後立即關閉。 我試圖在父窗口關閉事件偵聽器的時候打開一個新窗口......但這沒有幫助。

代碼示例:

`app.js:` 
var loginWin = Ti.UI.createWindow({ 
    url:login.js 
}); 
loginWin.open(); 


`login.js:` 

var win = Ti.UI.currentWindow; 

var btn = Ti.UI.createButton({.....}); 
btn.addEventListener('click',function(e){ 

    //putting win.close() also causes the problem 
    var appCoreWindow = Ti.UI.createWindow({ 
     url:"core.js" 
    }); 
    win.close(); 
    appCoreWidnow.open(); 
}); 
win.add(btn); 
+2

你可以發佈示例代碼,看看你是如何想達到這種效果,然後就有人能做出調整呢? – daniula

+0

對不起,第一次發佈一個問題))請檢查代碼示例 – user3634263

回答

2

你正在創建內部事件處理程序窗口對象,當函數完成垃圾收集器去除一切局部變量,包括appCoreWindow。

試試這個:

var win = Ti.UI.currentWindow; 

var appCoreWindow = Ti.UI.createWindow({ url:"core.js" }); 

var btn = Ti.UI.createButton({.....}); 
btn.addEventListener('click',function(e){ 
    appCoreWidnow.open(); 
    win.close(); 
}); 
win.add(btn); 
+0

沒有完全幫助,但現在我知道在哪裏尋找錯誤。非常感謝) – user3634263

+0

如果您發現問題的解決方案不同,您可以將它作爲答案發布在此處,以便StackOverflow的其他用戶可以看到它嗎? – daniula

+0

我所做的是在app.js中定義登錄窗口,而不是在login.js中,並從那裏轉換到core.js。不完全是預期的方式,但是有訣竅。當然在eventListener之外創建了新窗口,這似乎是問題所在。 – user3634263