it-swarm.com.de

So navigieren Sie mit Swift von einem View Controller zu einem anderen

Ich möchte von einem Ansichts-Controller zu einem anderen navigieren. Wie kann ich den folgenden Objective-C-Code in Swift konvertieren?

UIViewController *viewController = [[self storyboard] instantiateViewControllerWithIdentifier:@"Identifier"];
UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:viewController];
[self.navigationController pushViewController:navi animated:YES];
72
sathish

Erstellen Sie eine Swift-Datei (SecondViewController.Swift) für den zweiten View-Controller Und geben Sie in der entsprechenden Funktion Folgendes ein:

let secondViewController = self.storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as SecondViewController
self.navigationController.pushViewController(secondViewController, animated: true)


Swift 2+

let mapViewControllerObj = self.storyboard?.instantiateViewControllerWithIdentifier("MapViewControllerIdentifier") as? MapViewController
self.navigationController?.pushViewController(mapViewControllerObj!, animated: true)

Schnell 4

let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "IKDetailVC") as? IKDetailVC
self.navigationController?.pushViewController(vc!, animated: true)
173

In meiner Erfahrung war navigationController null, daher habe ich meinen Code folgendermaßen geändert:

let next = self.storyboard?.instantiateViewControllerWithIdentifier("DashboardController") as! DashboardController
self.presentViewController(next, animated: true, completion: nil)

Vergessen Sie nicht, ViewController StoryBoard Id in StoryBoard -> identity inspector einzustellen.

32
Mojtabye

Swift 3.01

let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "Conversation_VC") as! Conversation_VC
self.navigationController?.pushViewController(secondViewController, animated: true)
15
Maksim Kniazev

Wenn Sie nicht möchten, dass die Schaltfläche "Zurück" angezeigt wird (was bei mir der Fall war, weil ich mich nach dem Anmelden eines Benutzers präsentieren wollte), können Sie den Stamm des Nav-Controllers festlegen:

let vc = self.storyboard?.instantiateViewControllerWithIdentifier("YourViewController") as! YourViewController
        let navigationController = UINavigationController(rootViewController: vc)
        self.presentViewController(navigationController, animated: true, completion: nil)
15
Keith Holliday

In Swift 4.0

var viewController: UIViewController? = storyboard().instantiateViewController(withIdentifier: "Identifier")
var navi = UINavigationController(rootViewController: viewController!)
navigationController?.pushViewController(navi, animated: true)
6
Rahul Fate

Swift 3  

let secondviewController:UIViewController =  self.storyboard?.instantiateViewController(withIdentifier: "StoryboardIdOfsecondviewController") as? SecondViewController

self.navigationController?.pushViewController(secondviewController, animated: true)
2
SAURAV JUSTIN
let objViewController = self.storyboard?.instantiateViewController(withIdentifier: "ViewController") as! ViewController
self.navigationController?.pushViewController(objViewController, animated: true)
1
Davender Verma

In Swift 4.1 und Xcode 10

Hier AddFileViewController ist Second View Controller.

Storyboard-ID ist AFVC

let next = self.storyboard?.instantiateViewController(withIdentifier: "AFVC") as! AddFileViewController
self.present(next, animated: true, completion: nil)

//OR

//If your VC is DashboardViewController
let dashboard = self.storyboard?.instantiateViewController(withIdentifier: "DBVC") as! DashboardViewController
self.navigationController?.pushViewController(dashboard, animated: true)

Bei Bedarf verwenden Sie thread.

Ex: 

DispatchQueue.main.async { 
    let next = self.storyboard?.instantiateViewController(withIdentifier: "AFVC") as! AddFileViewController
    self.present(next, animated: true, completion: nil) 
}

Wenn Sie sich bewegen wollen nach einiger Zeit.

EX: 

//To call or execute function after some time(After 5 sec)
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
    let next = self.storyboard?.instantiateViewController(withIdentifier: "AFVC") as! AddFileViewController
    self.present(next, animated: true, completion: nil) 
} 
1
iOS

In Swift 3

let nextVC = self.storyboard?.instantiateViewController(withIdentifier: "NextViewController") as! NextViewController        
self.navigationController?.pushViewController(nextVC, animated: true)
1
Zeeshan

Swift 5

Verwenden Sie Segue, um von einem View Controller zu einem anderen View Controller zu navigieren:

performSegue(withIdentifier: "idView", sender: self)

Dies funktioniert mit Xcode 10.2.

0
Jerry Chong

Swift 4

Sie können den Bildschirm wechseln, indem Sie den Navigationscontroller drücken. Zuerst müssen Sie den Navigationscontroller mit UIViewController einstellen. 

let vc = self.storyboard?.instantiateViewController(withIdentifier: "YourStoryboardID") as! swiftClassName

self.navigationController?.pushViewController(vc, animated: true)
0

Xamarin (C #)

NavigationController.PushViewController(new HomePage(), true);

Übergeben Sie den Destination ViewController.

Schnell 

navigationController?.pushViewController(HomePage(), animated: true);
0
Shanu Singh