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

Titanium 钛制选项卡组:如何关闭窗口,然后显示选项卡组?,titanium,appcelerator,titanium-mobile,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(); var win = Ti.UI.currentWi

我有以下应用程序流程:

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

以下是代码:

app.js

var win = Titanium.UI.createWindow
({
    title:'User Login',
    url:'Login.js',
    tabBarHidden:true,
    backgroundColor:'gray',
    navBarHidden:false
});
win.open();
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();   
   }
}
var win = Ti.UI.currentWindow;
var loginView = Ti.UI.createWindow
({
    backgroundColor:'transparent'
});
Login.js

var win = Titanium.UI.createWindow
({
    title:'User Login',
    url:'Login.js',
    tabBarHidden:true,
    backgroundColor:'gray',
    navBarHidden:false
});
win.open();
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();   
   }
}
var win = Ti.UI.currentWindow;
var loginView = Ti.UI.createWindow
({
    backgroundColor:'transparent'
});
现在,如果我隐藏当前窗口(win)一切正常,但登录视图始终显示在后台!!!所以我想关闭登录窗口,然后打开标签组。所以我试着:

win.close();
tabGroup.open();
但不起作用的应用程序会崩溃

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


谢谢……

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

,如果该窗口是根元素之外的第一个窗口,并且无法关闭。您可以尝试删除它的所有子项并将其背景设置为透明,然后打开您的
选项卡组

解决!!!正如slash197在Login.js中所建议的那样,我试图关闭根窗口
win
。因此,我在Login.js中使用了一个虚拟窗口,然后关闭它并打开
选项卡组
。比如:

Login.js

var win = Titanium.UI.createWindow
({
    title:'User Login',
    url:'Login.js',
    tabBarHidden:true,
    backgroundColor:'gray',
    navBarHidden:false
});
win.open();
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();   
   }
}
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();   
   }
}

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

解决了!!!正如slash197在Login.js中所建议的那样,我试图关闭根窗口
win
。因此,我在Login.js中使用了一个虚拟窗口,然后关闭它并打开
选项卡组
。比如:

Login.js

var win = Titanium.UI.createWindow
({
    title:'User Login',
    url:'Login.js',
    tabBarHidden:true,
    backgroundColor:'gray',
    navBarHidden:false
});
win.open();
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();   
   }
}
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();   
   }
}

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

@adrian aproape de tine,TarguMures@adrian塔尔古·穆雷斯酒店