2017-06-21 4 views
0

Ich mache eine Tab-basierte App und möchte entweder die Login-oder die Benutzerprofil-Registerkarte zeigen/ausblenden, je nachdem, ob der Benutzer angemeldet ist oder nicht. Wie kann ich das machen? Ich habe versucht, die sichtbare Eigenschaft der Registerkarte zu setzen, aber das funktioniert nicht und beide Registerkarten sind sichtbar.Wie zeigen Tabs dynamisch mit Appcelerator/Titanium?

Wenn das Setzen von zwei Registerkarten bedingt nicht gut funktioniert, gibt es eine Möglichkeit, das Laden der src-Dateien dynamisch zu ändern? Ich möchte das Profil und die Login/Register-Funktionen nicht in einer Datei speichern.

index.xml:

<Alloy> 
<TabGroup id="root"> 
    <Tab id="profile" visible="false" title="Profile" icon="KS_nav_views.png"> 
     <Require type="view" src="profile" /> 
    </Tab> 
    <Tab id="login" title="Login" icon="KS_nav_views.png"> 
     <Require type="view" src="modalLogin" /> 
</TabGroup> 
</Alloy> 

index.js()

// open TabGroup 
$.root.open(); 
var userStatus = "loggedin"; 
showProfile(userStatus); 
function showProfile(user){ 
    if (user == "loggedin") { 
    $.login.visible = false; 
    $.profile.visible = true; 
    console.log("user is logged in"); 
    } else { 
    $.profile.visible = false; 
    $.login.visible = true; 
    console.log("user is not logged in"); 
    } 
} 

Antwort

0

Nach den Titanium.UI.TabGroup docs:

... Tabs können nicht entfernt werden aus der Tab-Gruppe hinzugefügt, und die Registerkarten können nicht nachbestellt werden.

Aus meiner Erfahrung, die TabGroup Komponente ist wirklich beschränkt und vor allem durch maßgeschneiderte Komponenten durch die Devs ersetzt. Vielleicht ist das auch dein Fall!

Wie für die dynamische Require Quelldatei, würde ich vorschlagen, das View-Element programmatisch nach Ihren Bedürfnissen zu erstellen/entfernen, anstatt es in die XML einzufügen. Meine Erfahrung mit dramatisch wechselnden Ansichtselementen im laufenden Betrieb ist wiederum nicht die beste: wilde Fehler treten auf, wenn ich es versuche.

Also, ich ziehe es vor, ein Element komplett zu zerstören und ein anderes "von Hand" einzufügen.

Aber hey, experimentiere damit! Sie können eine bessere Lösung finden =) Nur als Referenz, hier ist the iffy documentation auf dem Require Tag.

+0

Danke für die Klarstellung. Ich denke, ich werde alles in eine Datei schreiben oder es mit einem Modul versuchen. – user24957

Verwandte Themen