Titanium TabGroup:如何关闭窗口然后显示选项卡组?

时间:2012-03-26 14:11:27

标签: titanium appcelerator titanium-mobile

我有以下应用流程:

第一个屏幕是登录屏幕,如果登录成功,则选项卡组将打开。

这是代码:

app.js

var win = Titanium.UI.createWindow
({
    title:'User Login',
    url:'Login.js',
    tabBarHidden:true,
    backgroundColor:'gray',
    navBarHidden:false
});
win.open();

Login.js

var win = Ti.UI.currentWindow;

// some UI controls

loginBtn.addEventListener('click', function(e)
{
   //calling web service     
   if(isSuccess == 1)
   {
       var tabGroup = Titanium.UI.createTabGroup();    
       // code to create Tab 
       tabGroup.open();   
   }
}

现在如果我隐藏 currentWindow(win),一切正常但是登录视图会一直显示在后台!所以我想关闭“登录”窗口,然后打开选项卡组。所以我试过了:

win.close();
tabGroup.open();

但不起作用应用程序崩溃。

那么,如何关闭窗口然后显示选项卡Group ???

...谢谢

2 个答案:

答案 0 :(得分:3)

解决了!!!正如slash197在 Login.js 中建议的那样,我试图关闭win这是根窗口。所以我在 Login.js 中使用了一个虚拟窗口,然后关闭它并打开tabGroup。喜欢:

<强> Login.js

var win = Ti.UI.currentWindow;
var loginView = Ti.UI.createWindow
({
    backgroundColor:'transparent'
});

并将所有UI组件添加到loginView而不是win

然后是 Android

loginView.open();

iPhone

loginView.open();
win.add(loginView);

成功后: -

loginBtn.addEventListener('click', function(e)
{
   //calling web service     
   if(isSuccess == 1)
   {
       var tabGroup = Titanium.UI.createTabGroup();    
       // code to create Tab 

       //for Android
       loginView.close();

       //for iPhone
       win.remove(loginView);

       tabGroup.open();   
   }
}

注意: - 不确定这是最佳方法。但它对我有用。

答案 1 :(得分:2)

如果该窗口是第一个而不是根元素,则无法关闭。您可以尝试删除其中的所有子项,并将其背景设置为透明,然后打开tabGroup