2013-05-03 4 views
12

Ich lerne IOS/Xcode und an einer Straßensperre.Beispiel für Login-Bildschirm modal basierend auf Storyboard

Ich habe einen tabbarcontroller + Navigation-basierte Design. Ich muss einen Login-Bildschirm präsentieren, wenn der Benutzer nicht angemeldet ist. Hier ist die Grundherrschaft. Die Login-Seite braucht eine navigationbar (wie das Tutorial I legt folgte ein "Go" -Taste auf der Bar.

LoginController: (LTController.h,.m) 

Main View:TabBarController> 
        NavigationController>View1>View1a 
        NavigationController>View2 

Storyboard layout

ich viele Beiträge hier auf modalen Ansicht lesen, delegierte Methode, etc. Die meisten von ihnen Code-Schnipsel sind, die leider ein wenig über den Kopf für meine Anfänger sind.

wäre eine einfache Erklärung, wie schätzen dies zu erreichen. espacially, auf dem ein Hinweis Dateien braucht Änderungen groß wäre.

als ks

+0

Ich brauche etwas Klarheit, Sie haben 1 Tab-Leiste mit 2 Icons & eins für die Öffentlichkeit und ein anderes für nicht-öffentliche, die vor Authentifizierung schützt, richtig? –

+0

@KumarKl Nein. Nur eine Registerkarte, die jetzt zwei Registerkarten enthält. Der Anmeldebildschirm hat nur eine Navigationsleiste, um den Login-Button zu setzen. – aVC

+0

K Ich habe es .. warten, ich werde ein paar Sachen setzen –

Antwort

12

Hier ist Szenario. Es ist so einfach . Ich hoffe nur, dass es nützlich sein wird.

enter image description here

Für die UITableBarController einen Namen Storyboard für Identität identer image description here

Dann in Ihrem Viewcontroller Klasse-Datei Sie haben geben die Authentifizierungsinformationen rechts>.? Mach ein paar Sachen da drüben zur Authentifizierung. dann folge diesem Code. Es funktioniert gut

+1

Fühlen Sie sich frei zu fragen , Wenn Sie irgendein Problem gegenüber –

+1

haben Vielen Dank. Mit viewController (Sie erwähnten den Code hinzuzufügen), meintest du den loginViewController? – aVC

+1

Ja. Sie haben LoginViewController oder ViewController richtig. Login Seite mit der Hauptseite richtig? –

10

sieht es so aus, als ob Sie einen guten Start haben. Da Sie ein Tabbar-Design haben, müssen Sie entscheiden, wie Sie die Login-Seite präsentieren und wann Sie das tun.

Sie müssen es entweder präsentieren, bevor die Registerkarte angezeigt wird, oder Logik in Ihrem ersten View-Controller setzen, um den Anmeldevorgang einzuleiten. Es gibt auch andere Möglichkeiten, aber sie werden komplizierter und ich wollte dir jetzt grundlegende Entscheidungen geben.

Hier ist das allgemeine Konzept, das ich empfehlen würde.

a) Erstellen Sie eine permanente Speichervariable, um festzustellen, ob ein Benutzer angemeldet ist oder nicht.

b) fügen Sie eine Überprüfung für dieses Flag in der View laden Methode des ersten View-Controllers hinzu, der an Ihre Registerkarte angehängt ist.

c) eine modale Anmeldeseite direkt vom View-Controller anzeigen. Wenn sie sich anmelden, dann lehnen sie es ab, wenn nicht, bleiben sie auf der modalen Seite stecken.

so, hier ist im Grunde, wie das tun:

zum Zweck der Erläuterung, ich Ihren ersten View-Controller aufrufe würde gehen - ersten Reiter auf Tabbar Controller - fviewController - ok?

in fviewController.m

-(void)viewDidLoad { 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    if ([[defaults objectForKey:@"loggedIn"]boolValue]) { 
     NSLog(@"user is logged in - do nothing"); 
    } 
    else { 

     NSLog(@"User is not logged in"); 
     [self performSegueWithIdentifier:@"LoginPage" sender:self]; 
    } 

} 

ein paar mehr Punkte es sieht aus wie Sie Storyboards und segues verwenden.In diesem Fall würden Sie die folgenden Schritte aus:

  • einen neuen View-Controller für Ihre Login-Seite
  • Steuer zieht eine segue Verbindung, um es von den ersten View-Controller in Ihrer Tabbar
  • identifizieren die Segue erstellen, wie „modal“
  • Kiste eine neue view-Controller-Klasse für den Login-view-Controller
  • Ihre Ansicht präsentieren und verwalten Sie Ihre Authentifizierung
  • , wenn der Benutzer angemeldet ist, können Sie das zurück zu dem NSUserDefaults speichern müssen Hinweis: Wenn Sie mehrere Benutzer oder andere Schemata haben, möchten Sie möglicherweise den einzelnen Wert ändern, den ich Ihnen im Beispielstatus "Verfolgen" für den aktuellen Benutzer gezeigt habe. Auch: Wenn Sie Abmelde-Code haben, müssen Sie das Flag korrekt einstellen. Auch: Wenn Benutzer sich häufig an- und abmelden, wird die Ansicht verwenden anstelle der Ansicht geladen angezeigt.

den Status So spiegeln:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setValue:[NSNumber numberWithBool:YES] forKey:@"loggedIn"]; //in 
    [defaults setValue:[NSNumber numberWithBool:NO] forKey:@"loggedIn"]; //out 

    do this in your login controller 

die modale Ansicht zu schließen. Technisch sollten Sie einen Delegaten Rückruf verwenden, dies zu tun, aber wenn man die Dinge einfach zu halten versuchen, sollte dies in Ordnung sein

 [self dismissViewControllerAnimated:YES completion:^{ 

     }]; 

So Ihre Logik so sein würde - haben sie anmelden? Ja, dann setzen Sie den YES-Status für eingeloggt und dann entlassen. Wenn sie sich nicht anmelden, tun Sie nichts. Sie stecken fest.

Schließlich, wenn Sie Ihren Login-Controller einrichten müssen, würden Sie die Methode: prepareForSegue ... verwenden, um Variablen zu initialisieren, bevor das Segment auftritt. Sie haben wahrscheinlich darüber gelesen, wenn Sie einige Tutorials machen.

Nun ... hoffe, das hilft. Es ist ein sehr grundlegender Ansatz. Wenn dies funktioniert, können Sie während des Betriebs weitere Sicherheitsfunktionen hinzufügen.

viel Glück.

+0

Vielen Dank für die Details. Ja, ich mache viele Tutorials durch. Unglücklicherweise fange ich bei Null an, einschließlich Obj C, und kämpfe damit gegen meine Chancen. Ich schätze es sehr.Ich habe den Login, die Überleitung und so weiter behandelt. Die modale Ansichtsanzeige gab mir einen Albtraum. Ich werde das ausprobieren. – aVC

+0

Ich wünschte, ich könnte beide Antworten akzeptieren. Ich stimme deine ab. Ich bin jetzt auf NSUserdefaults Tutorial. Danke, dass du das erwähnt hast. Nochmals vielen Dank für das Detail und die Geduld. – aVC

+1

Wenn Sie den Anmeldebildschirm mit einem Segment anzeigen, können Sie ihn mit einem Abwicklungssegment schließen. Siehe http://stackoverflow.com/questions/12561735/what-are-unwind-segues-for-and-how-to-use-them –

Verwandte Themen