Как программно перейти к UIViewController? - PullRequest
0 голосов
/ 29 марта 2020

У меня возникают трудности с программным переходом к UIViewController из другого UIViewController. Я использую UIKit и Swift 5.

Я пытался следовать этой статье Medium , но не могу заставить ее работать на меня.

В моем файле AppDelegate я изменили функцию didFinishLaunchingWithOptions следующим образом:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    self.window = UIWindow(frame: UIScreen.main.bounds)
    self.window?.rootViewController = LoginViewController()
    self.window?.makeKeyAndVisible()

   return true
}

И затем в моем LoginViewController () я пытаюсь перейти к своему DashboardViewController, выполнив следующее:

 override func viewDidLoad() {
    super.viewDidLoad();

    // present a modal with an embed UINavigationController
    let rvc = DashboardViewController()
    let vc = UINavigationController(rootViewController: rvc)
    vc.modalPresentationStyle = .overFullScreen
    present(vc, animated: true, completion: nil)
}

Но DashboardViewController никогда не вызывается .

Что я делаю не так и как я могу изменить код для работы?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 29 марта 2020

Я столкнулся с видео на Youtube, которое помогло мне решить мою проблему.

AppDelegate

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    let login = LoginViewController()
    let navigationController = UINavigationController(rootViewController: login)
    navigationController.setNavigationBarHidden(true, animated: true)

    self.window = UIWindow(frame: UIScreen.main.bounds)
    self.window?.rootViewController = navigationController
    self.window?.makeKeyAndVisible()

    return true
}

LoginViewController

let dashboard = DashboardViewController()
self.navigationController?.pushViewController(dashboard, animated: true)
0 голосов
/ 29 марта 2020

1 - начать с SceneDelegate

self.window = UIWindow(windowScene: windowScene) let navigation = UINavigationController() window.rootViewController = navigation window?.makeKeyAndVisible()

2-затем let rvc = DashboardViewController() self.navigationController?.pushViewController(rvc, animated: true)

3 - попробуйте его в viewDidLoad (), если не работает, попробуйте его в viewWillAppear

0 голосов
/ 29 марта 2020

Попробуйте это в вашем viewDidLoad методе:

let rvc = self.storyboard!.instantiateViewControllerWithIdentifier("DashboardViewController") as! DashboardViewControllerSwift
let navController = UINavigationController(rootViewController: rvc)
navController.modalPresentationStyle = .overFullScreen
self.present(navController, animated:true, completion: nil)

Измените DashboardViewControllerSwift на имя вашего файла Swift для вашего DashboardViewController без бита .swift. Убедитесь, что он установлен как класс для объекта DashboardViewController в IB / Storyboard.

Также убедитесь, что объект DashboardViewController в IB / Storyboard имеет идентификатор Storyboard Identifier, установленный как DashboardViewController.

...