ViewController 礼物并不总是有效

ViewController present does not always work

我在 IOS 应用程序中显示 viewcontroller 时遇到一些问题。 有时它会工作并显示视图,但有时我猜当上下文有点不同时它不会工作。调试器中没有错误或警告,它可以从主情节提要中找到 ViewController(至少它不是 nil) 它曾经与 self.present 一起使用,但似乎不再起作用了。

  @IBAction func showHistoryButton(_ sender: MDCButton) {
        let exercisesHistoryVC = ExercisesHistoryViewController.instantiate(from: .Main)
        exercisesHistoryVC.modalPresentationStyle = .fullScreen
        let appDeligate = UIApplication.shared.delegate as! AppDelegate
        appDeligate.window?.rootViewController!.present(exercisesHistoryVC,animated: true,completion: nil)
       // parent?.present(exercisesHistoryVC, animated: true, completion: nil)
    }

使用如下代码,同时显示新视图控制器

@IBAction func showHistoryButton(_ sender: MDCButton) {
        let exercisesHistoryVC = ExercisesHistoryViewController.instantiate(from: .Main)
        exercisesHistoryVC.modalPresentationStyle = .fullScreen
        UIApplication.topViewController()?.present(exercisesHistoryVC, animated: false, completion: nil)
 }

extension UIApplication {
    
    static func topViewController(base: UIViewController? = UIApplication.shared.delegate?.window??.rootViewController) -> UIViewController? {
        if let nav = base as? UINavigationController {
            return topViewController(base: nav.visibleViewController)
        }
        if let tab = base as? UITabBarController, let selected = tab.selectedViewController {
            return topViewController(base: selected)
        }
        if let presented = base?.presentedViewController {
            return topViewController(base: presented)
        }
        return base
    }
    
}