是否可以通过使用URLScheme从一个ViewController迁移到另一个ViewController?

问题描述

我正在研究一个项目,用户可以从外部打开应用程序并显示ProductViewController(这是一个ViewController,它显示该产品的部分名称,模式,价格和...等信息),我使用了AppDelegate中的func:

func application(_ app: UIApplication,open url: URL,options: [UIApplicationopenURLOptionsKey : Any] = [:]) -> Bool 

我想在应用程序中放置一些快捷方式按钮,当用户点击该按钮时,也可以在ProductViewController中访问相同的产品。(想象一个用户一次使用某个产品后,我会放置一些快捷方式,以便用户可以快速找到该产品)我知道我可以通过使用以下代码来做到这一点:

let productVC = ProductViewController()
present(productVC,animated: true)

但是我想知道我可以使用那部分代码(在AppDelegate内部也可以这样做)。 我不想同时使用两种方法来完成一项工作。

解决方法

是的,您可以在应用程序调用openURL(或更确切地说是application(_:open:options))中包含一个带有调用私有URL方案的URL的按钮。然后,让您的应用程序代表对URL进行解码,找出URL指定的视图控制器,然后打开该视图控制器。

只需让您的按钮的IBAction用您的自定义URL调用application(_:open:options)。您可以使用类似这样的内容:

myApp://open?VC=ProductViewController

open是您的应用要查找的动词,用于告诉它打开视图控制器,而VC查询参数则告诉它要打开哪个VC。

您到底需要什么帮助?