问题描述
我正在研究一个项目,用户可以从外部打开应用程序并显示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。
您到底需要什么帮助?