2016-06-21 12 views
0

Ich habe die Grundlagen zum Erstellen einer iOS-App mit Swift gelernt. Ich möchte etwas tun, aber ich bin mir nicht sicher, wie man es baut, ich habe einen Tab-Controller mit zwei Artikel "Home" und "Account". I „Konto“ angezeigt werden soll: - LoginViewController wenn Benutzer nicht angemeldet ist - AccountViewController wenn BenutzerSo tauschen Sie ViewControllers in einem UITabBarController aus

Wie angemeldet ist kann ich das tun? Ich denke, vielleicht mit einem ByPassController, die auf LoginViewController oder AccountViewController umleiten? Dann wird "Account" immer ByPassController anzeigen. Aber ich möchte einige Ratschläge hören.

Vielen Dank.

Antwort

1

Sie zuerst die zweite Registerkarte auf eine AccountViewController. Dann wird in der tabBarController:didSelectViewController: Rückruf, prüfen Sie, ob der Benutzer angemeldet ist, wenn der Benutzer nicht angemeldet ist, ersetzen Sie die Viewcontroller mit einem LoginViewController.

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 
    if ([tabBarController selectedIndex] == 1 && !user.isSignedIn) 
    { 
     //fill an array with all the view controllers in the UITabBarController 
     NSMutableArray *arr = [[NSMutableArray alloc] initWithArray:[tabBarController viewControllers]]; 

     //inistantiate login view controller 
     UIViewController *loginViewController = [[LoginViewController] init]; 

     //replace the second UIViewController in the array with LoginViewController 
     [arr replaceObjectAtIndex:1 withObject: loginViewController]; 

     //set array 
     [tabBarController setViewControllers:arr]; 

    } 
} 

Nachdem der Benutzer meldet sich, ersetzen Sie die zweite Registerkarte mit der AccountViewController

1

Sie können einen Booleschen Wert beibehalten, der den Anmeldestatus angibt. Wenn die Verwendung nicht angemeldet ist, zeigen Sie einfach einen View-Controller mit Anmeldefeldern an.

let loginVC = storyboard.instantiateViewControllerWithIdentifier(kMyViewControllerId) as! MyViewController 
self.presentViewController(loginVC, animated: true, completion: nil) 

und entlässt es nur beim Einloggen.

self.dismissViewControllerAnimated(true, completion: nil) 
Verwandte Themen