Как перейти от одного View Controller к другому с помощью Swift

Я хотел бы перейти от одного контроллера представления к другому. Как я могу преобразовать следующий код Objective-C в Swift?

UIViewController *viewController = [[self storyboard] instantiateViewControllerWithIdentifier:@"Identifier"];
UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:viewController];
[self.navigationController pushViewController:navi animated:YES];
70 голосов | спросил sathish 4 J0000006Europe/Moscow 2014, 17:01:19

11 ответов


0

Создайте файл swift (SecondViewController.swift) для второго контроллера представления и в соответствующей функции введите это:

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)

Swift 4

let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "IKDetailVC") as? IKDetailVC
self.navigationController?.pushViewController(vc!, animated: true)
ответил Audrey Sobgou Zebaze 4 J0000006Europe/Moscow 2014, 17:21:39
0

По моему опыту navigationController равнялся нулю, поэтому я изменил свой код следующим образом:

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

Не забудьте установить ViewController StoryBoard Id в StoryBoard -> identity inspector

ответил Mojtabye 15 Mayam15 2015, 01:08:24
0

Если вы не хотите, чтобы кнопка «Назад» появлялась (что было в моем случае, потому что я хотел представить это после того, как пользователь вошел в систему), вот как установить корень контроллера Nav:

let vc = self.storyboard?.instantiateViewControllerWithIdentifier("YourViewController") as! YourViewController
        let navigationController = UINavigationController(rootViewController: vc)
        self.presentViewController(navigationController, animated: true, completion: nil)
ответил Keith Holliday 14 MonEurope/Moscow2015-12-14T20:15:38+03:00Europe/Moscow12bEurope/MoscowMon, 14 Dec 2015 20:15:38 +0300 2015, 20:15:38
0

SWIFT 3.01

let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "Conversation_VC") as! Conversation_VC
self.navigationController?.pushViewController(secondViewController, animated: true)
ответил Maksim Kniazev 18 52016vEurope/Moscow11bEurope/MoscowFri, 18 Nov 2016 14:00:41 +0300 2016, 14:00:41
0

В Swift 4.0

var viewController: UIViewController? = storyboard().instantiateViewController(withIdentifier: "Identifier")
var navi = UINavigationController(rootViewController: viewController!)
navigationController?.pushViewController(navi, animated: true)
ответил Rahul Fate 6 +03002017-10-06T13:40:09+03:00312017bEurope/MoscowFri, 06 Oct 2017 13:40:09 +0300 2017, 13:40:09
0

Swift 3

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

self.navigationController?.pushViewController(secondviewController, animated: true)
ответил SAURAV JUSTIN 5 PM00000010000000831 2017, 13:59:08
0

В быстром 3

let nextVC = self.storyboard?.instantiateViewController(withIdentifier: "NextViewController") as! NextViewController        
self.navigationController?.pushViewController(nextVC, animated: true)
ответил Zeeshan 28 AM00000080000002931 2017, 08:30:29
0
let objViewController = self.storyboard?.instantiateViewController(withIdentifier: "ViewController") as! ViewController
self.navigationController?.pushViewController(objViewController, animated: true)
ответил Davender Verma 9 AM00000080000001331 2017, 08:54:13
0

В Swift 4.1 и Xcode 9.3

Здесь AddFileViewController - это второй контроллер представления.

Идентификатор раскадровки - AFVC

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

//OR

let dashboard = self.storyboard?.instantiateViewController(withIdentifier: "DBVC") as! DashboardViewController
self.navigationController?.pushViewController(dashboard, animated: true)
ответил iOS 8 Mayam18 2018, 10:03:35
0

Swift 4

Вы можете переключить экран, нажав на контроллер навигации, прежде всего вам нужно установить контроллер навигации с помощью UIViewController

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

self.navigationController?.pushViewController(vc, animated: true)
ответил Azharhussain Shaikh 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 24 Sep 2018 14:26:26 +0300 2018, 14:26:26
0

Xamarin (C #)

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

Передайте конечный контроллер вида.

Swift

navigationController?.pushViewController(HomePage(), animated: true);
ответил Shanu Singh 7 Jpm1000000pmMon, 07 Jan 2019 14:31:58 +030019 2019, 14:31:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132