从 App Delegate 打开导航控制器

Open Navigation Controller from App Delegate

我已经实施了一个 URL 方案,用于在付款后重定向回我的应用程序。当网页直接返回我的应用程序时,该应用程序应在当前视图 上打开一个导航控制器。 (所以打开模式)。

如何从 func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool 方法中的 AppDelete 执行此操作?

提前致谢!

您是使用故事板还是在委托中手动创建 window?如果您有权访问 window,您可以这样做:

window?.rootViewController?.present(yourViewController, animated: true, completion: nil)

否则,它应该适用于所有情况:

UIApplication.shared.keyWindow?.rootViewController?.present(yourViewController, animated: true, completion: nil)

如果提交请求的视图控制器是应该显示模式的视图控制器,我建议采用不同的方法。我建议在通知中心定义一个通知,用于通知当前视图控制器。

在您的视图控制器中,调用通知中心方法之一,例如 addObserver(forName:object:queue:using:) 以观察您的通知。

然后,当您获得预期的 URL.

时,从您的应用程序委托的 application(_:open:options:) 实现中调用 Notification 方法,例如 post(name:object:)