0

私が試したことはすべて、エラー、メッセージ、実際には何もしません。最初はログイン タブで、各タブには独自の .js コードがあります。たとえば、ログインには独自の login.js があります。今、私は httpClient を使用して私たちのウェブサイトに戻って認証し、ログインタブを削除して他のタブを表示したいのですが、私の人生ではそれを機能させることができません.ログインタブを削除することはできますが、.他のタブ。20個の例を見つけたが、タブが独自の.jsファイルに分割されていないか、単純な例が機能しないため、私は気が狂います。ヘルプ!これは非常に基本的なようですが、それでも...

app.js

    // 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'}) などを試してみました。ありがとう。

4

3 に答える 3

1

tabGroup がある app.js にこの eventListener を追加することをお勧めします。その後、どこからでも「app:gotoTab」イベントを発生させることができます。

app.js

Ti.App.addEventListener('app:gotoTab', function(e) {
    tabGroup.setActiveTab(e.tab);
});

login.js

// tab index starts with 0, so 0 is your first tab
Ti.App.fireEvent('app:gotoTab', { tab: 0 });
于 2013-09-11T17:26:25.213 に答える
0

このコードをコピーして貼り付けるLogin.js

var win = Titanium.UI.currentWindow;  

    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");
                tabGroup.setActiveTab(2);

            }
            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);

ねえロス、あなたはいつもwindow.closeの子ウィンドウの作業を完全に覚えています。

このアプリケーションでは。シングルウィンドウベースのアプリケーションを使用できます。最初のウィンドウで正常にログインすると、2番目の子ウィンドウを開くことができます。

詳細については、KICHENShinkExampleを使用できます。これはあなたにとって非常に便利です。

于 2012-08-30T09:32:41.613 に答える
0

UI の再設計が必要になる場合があります。Apple Human Interface Guidelines では、プログラムでタブを切り替えたり、タブを追加/削除したりしないでください。彼らは、タブグループがユーザーの前に置かれると、ユーザーによってのみ制御されるべきであると期待しています。

ユーザーがアプリの他の機能を使用する前にログインする必要がある場合は、タブ グループを含むウィンドウの前にログイン ウィンドウを表示できます。それ以外の場合は、ログインが成功した後に、ログイン タブの内容を別のもの (ユーザー プロファイル情報や何らかの指示など) に置き換える必要があります。

于 2012-09-07T16:22:58.327 に答える