在我的应用程序中,人们从 Window 1 到 Window 2 再到 Window 3 等等,所以导航是:Window 1 -> Window 2 -> Window 3
要从一个窗口转到下一个窗口,我使用导航组:
var main = Titanium.UI.createWindow({
height:Ti.Platform.displayCaps.platformHeight,
width:Ti.Platform.displayCaps.platformWidth,
fullscreen:true,
navBarHidden : true,
});
var first = Ti.UI.createWindow({
height:Ti.Platform.displayCaps.platformHeight,
width:Ti.Platform.displayCaps.platformWidth,
url:'main_windows/main.js',
backButtonTitleImage : '../images/backb.gif',
fullscreen:true,
navBarHidden : true,
});
var navGroup = Ti.UI.iPhone.createNavigationGroup({
window:first
});
Ti.App.addEventListener('login', function(event)
{
var lwin = Ti.UI.createWindow({
height:Ti.Platform.displayCaps.platformHeight,
width:Ti.Platform.displayCaps.platformWidth,
url:'main_windows/login.js',
barImage: 'images/lback.gif',
fullscreen:true,
backgroundColor: '#f7f7f7',
navBarHidden : false,
_parent : Titanium.UI.currentWindow,
navGroup : navGroup,
rootWindow : first
});
navGroup.open(lwin);
});
first.navGroup = navGroup;
main.add(navGroup);
main.open();
~~~
然后在每个窗口中,我通过执行以下操作打开下一个窗口:
~~~
button1.addEventListener('click', function() {
Ti.App.fireEvent('services', {
zipcode : win.zipcode,
user_id : win.user_id,
user_uniqid : win.user_uniqid,
user_name : win.user_name,
user_email : win.user_email
});
});
Ti.App.addEventListener('services', function(event) {
var cwin = Titanium.UI.currentWindow;
var swin = Titanium.UI.createWindow();
swin.url = 'service.js';
swin.zipcode = event.zipcode;
swin.user_id = event.user_id;
swin.user_uniqid = event.user_uniqid;
swin.user_name = event.user_name;
swin.user_email = event.user_email;
swin.backgroundColor = '#f7f7f7';
swin._parent = cwin;
swin.navGroup = cwin.navGroup;
swin.rootWindow = cwin.rootWindow;
cwin.navGroup.open(swin);
});
~~~
当人们从 Window 1 -> Window 2 -> Window 3 开始时,这很有效,但当他们返回时则不行:
就像从窗口 1 -> 窗口 2 -> 窗口 3 -> 窗口 1 -> 窗口 2
发生这种情况时,我收到以下错误:
在意外状态下完成导航转换。导航栏子视图树可能会损坏。
我能做些什么来防止这种情况发生?