Ios5 钛:可以';t切换选项卡、关闭选项卡、除“我的当前选项卡”以外的任何其他选项卡
我尝试的每件事都不起作用,没有错误,没有信息,真的什么都没有。我有三个选项卡,第一个是login选项卡,每个选项卡都有自己的.js代码,例如,login有自己的login.js。现在,我使用httpClient对我们的网站进行身份验证,现在我想删除登录选项卡并显示其他选项卡,我无法让它在我的一生中正常工作,我现在可以删除登录选项卡,但无法加载其他选项卡。让我抓狂的是,我发现了20个示例,但它们要么没有将选项卡分离到自己的.js文件中,要么这个示例对我不起作用。救命啊!这看起来很基本,但是 app.jsIos5 钛:可以';t切换选项卡、关闭选项卡、除“我的当前选项卡”以外的任何其他选项卡,ios5,titanium,appcelerator,titanium-mobile,Ios5,Titanium,Appcelerator,Titanium Mobile,我尝试的每件事都不起作用,没有错误,没有信息,真的什么都没有。我有三个选项卡,第一个是login选项卡,每个选项卡都有自己的.js代码,例如,login有自己的login.js。现在,我使用httpClient对我们的网站进行身份验证,现在我想删除登录选项卡并显示其他选项卡,我无法让它在我的一生中正常工作,我现在可以删除登录选项卡,但无法加载其他选项卡。让我抓狂的是,我发现了20个示例,但它们要么没有将选项卡分离到自己的.js文件中,要么这个示例对我不起作用。救命啊!这看起来很基本,但是 app
// this sets the background color of the master UIView (when there are no windows/tab groups on it)
Titanium.UI.setBackgroundColor('#000');
// create tab group
var tabGroup = Titanium.UI.createTabGroup();
// create base UI tab and root window
//
var scan = Titanium.UI.createWindow({
title:'Scan',
backgroundColor:'#fff',
url:'scan.js',
mylabel:'Hello Scan'
});
var tab1 = Titanium.UI.createTab({
icon:'KS_nav_views.png',
title:'Scan',
window:scan
});
var login = Titanium.UI.createWindow({
title:'User Authentication',
tabBarHidden:true,
url:'login.js'
});
var loginTab = Titanium.UI.createTab({
title:"Login",
window:login
});
//
// create controls tab and root window
//
var win2 = Titanium.UI.createWindow({
title:'Manual',
backgroundColor:'#fff'
});
var tab2 = Titanium.UI.createTab({
icon:'KS_nav_ui.png',
title:'Manual',
window:win2
});
var label2 = Titanium.UI.createLabel({
color:'#999',
text:'I am Manual Window ',
font:{fontSize:20,fontFamily:'Helvetica Neue'},
textAlign:'center',
width:'auto'
});
win2.add(label2);
//
// add tabs
//
tabGroup.addTab(loginTab);
tabGroup.addTab(tab1);
tabGroup.addTab(tab2);
// open tab group
tabGroup.open();
login.js
var win = Titanium.UI.currentWindow;
var tabGroup = Ti.UI.currentWindow.tabGroup;
var appUrl = "http://localhost:3001/ticket_agents/sign_in";
var email = Titanium.UI.createTextField({
color:'#336699',
top:10,
left:10,
width:300,
height:40,
hintText:'Email',
keyboardType:Titanium.UI.KEYBOARD_DEFAULT,
returnKeyType:Titanium.UI.RETURNKEY_DEFAULT,
borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED
});
win.add(email);
var password = Titanium.UI.createTextField({
color:'#336699',
top:60,
left:10,
width:300,
height:40,
hintText:'Password',
passwordMask:true,
keyboardType:Titanium.UI.KEYBOARD_DEFAULT,
returnKeyType:Titanium.UI.RETURNKEY_DEFAULT,
borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED
});
win.add(password);
var loginBtn = Titanium.UI.createButton({
title:'Login',
top:110,
width:90,
height:35,
borderRadius:1,
font:{fontFamily:'Arial',fontWeight:'bold',fontSize:14}
});
var loginReq = Titanium.Network.createHTTPClient({
onload : function(e) {
var json = this.responseText;
var response = JSON.parse(json);
Ti.API.info("Received text: " + this.responseText);
if (response.id > 0)
{
alert("login Success");
win.tabGroup.close();
tabGroup.removeTab(loginTab);
tabGroup.setActiveTab(2);
tabGroup.open();
}
else
{
alert("Unknown login error");
}
},
onerror : function(e) {
var response = this.responseText;
Ti.API.debug(e.error);
alert('error: ' + this.responseText);
},
timeout : 5000
});
loginBtn.addEventListener('click',function(e)
{
if (email.value != '' && password.value != '')
{
loginReq.open("POST",appUrl);
var params = {ticket_agent: {email: email.value, password: password.value, remember_me: 0}
};
var authstr = 'Basic ' + Titanium.Utils.base64encode(email.value + ':' + password.value);
loginReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
loginReq.setRequestHeader('Authorization', authstr);
loginReq.send(JSON.stringify(params));
}
else
{
alert("Email/Password are required");
}
});
win.add(loginBtn);
我想这就是你需要看到的,login.js是我最新的尝试,但我尝试过像tabGroup.open({url:'app.js'})和其他四个选项。谢谢。只需复制粘贴此代码即可 Login.js 嘿,罗斯,你们总是记得窗户。把孩子的窗户关上 在此应用程序中。您可以使用单窗口基础应用程序。 若在第一个窗口中成功登录,则可以打开第二个子窗口
有关更多详细信息,可以使用KICHEN Shink示例。这对你很有用 您可能需要重新设计UI。苹果的人机界面指南明确指出,你不应该以编程方式切换选项卡或添加/删除选项卡。他们希望选项卡组仅在您将其放在他们面前时由用户控制
如果用户需要先登录,然后才能使用应用程序的其他功能,则可以在窗口前显示登录窗口,并显示选项卡组。否则,您应该在成功登录后用其他内容替换登录选项卡的内容,可能是用户配置文件信息或一些说明。您可能希望将此eventListener添加到选项卡组所在的app.js中。 然后,您可以从任何地方启动“app:gotoTab”事件 app.js
Ti.App.addEventListener('App:gotoTab',函数(e){
tabGroup.setActiveTab(e.tab);
});
login.js
var win = Titanium.UI.currentWindow;
var tabGroup = Ti.UI.currentWindow.tabGroup;
var appUrl = "http://localhost:3001/ticket_agents/sign_in";
var email = Titanium.UI.createTextField({
color:'#336699',
top:10,
left:10,
width:300,
height:40,
hintText:'Email',
keyboardType:Titanium.UI.KEYBOARD_DEFAULT,
returnKeyType:Titanium.UI.RETURNKEY_DEFAULT,
borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED
});
win.add(email);
var password = Titanium.UI.createTextField({
color:'#336699',
top:60,
left:10,
width:300,
height:40,
hintText:'Password',
passwordMask:true,
keyboardType:Titanium.UI.KEYBOARD_DEFAULT,
returnKeyType:Titanium.UI.RETURNKEY_DEFAULT,
borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED
});
win.add(password);
var loginBtn = Titanium.UI.createButton({
title:'Login',
top:110,
width:90,
height:35,
borderRadius:1,
font:{fontFamily:'Arial',fontWeight:'bold',fontSize:14}
});
var loginReq = Titanium.Network.createHTTPClient({
onload : function(e) {
var json = this.responseText;
var response = JSON.parse(json);
Ti.API.info("Received text: " + this.responseText);
if (response.id > 0)
{
alert("login Success");
win.tabGroup.close();
tabGroup.removeTab(loginTab);
tabGroup.setActiveTab(2);
tabGroup.open();
}
else
{
alert("Unknown login error");
}
},
onerror : function(e) {
var response = this.responseText;
Ti.API.debug(e.error);
alert('error: ' + this.responseText);
},
timeout : 5000
});
loginBtn.addEventListener('click',function(e)
{
if (email.value != '' && password.value != '')
{
loginReq.open("POST",appUrl);
var params = {ticket_agent: {email: email.value, password: password.value, remember_me: 0}
};
var authstr = 'Basic ' + Titanium.Utils.base64encode(email.value + ':' + password.value);
loginReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
loginReq.setRequestHeader('Authorization', authstr);
loginReq.send(JSON.stringify(params));
}
else
{
alert("Email/Password are required");
}
});
win.add(loginBtn);
//选项卡索引以0开头,因此0是您的第一个选项卡
firevent('App:gotoTab',{tab:0});
我将上面的login.js替换为您的,当我登录时不会发生任何事情,屏幕仍保留在登录屏幕上。试图理解你的第二段。所以我不确定单窗口基础应用程序是什么意思。单窗口基础应用程序只创建和打开一个窗口,没有任何选项卡栏或选项卡栏组。成功登录后,创建一个窗口并打开,否则,将显示错误警报。。。。试试这个。。