我正在使用Swift 4.1,我想知道如何传递这里给出的url数据:
func application(_ app: UIApplication, open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
}
进入我的UIViewController的子类我调用了HotSpotRISViewController。以下是我的尝试:
func application(_ app: UIApplication, open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
self.window = UIWindow(frame: UIScreen.main.bounds)
let vc = HotSpotRISViewController()
vc.setURL(theURL: url)
let navigationController = UINavigationController(rootViewController: vc)
self.window!.rootViewController = navigationController
}
我的HotSpotRISViewController包含此功能:
func setURL(theURL: URL) {
self.url = theURL
print(self.url ?? "nil")
}
在我的HotSpotRISViewController中,我有一个URL类型的属性可以设置。上面的代码正确传递了信息,因为我的print语句打印出了URL,但是我得到的是黑屏而不是我的应用程序。我错过了什么?然后另一方面,以下使应用程序正确启动但我不知道如何使用此方法传递url数据:
func application(_ app: UIApplication, open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = mainStoryboard.instantiateInitialViewController()
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
}
我想知道如何在没有黑屏的情况下正确启动我的应用并传递网址数据。谢谢。
答案 0 :(得分:2)
您可以在appDelegate文件中添加全局变量,并使用setURL函数获取它:
在您的AppDelegate.swift
中 var myurl: URL!
....
func application(_ app: UIApplication, open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
self.myurl = url
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = mainStoryboard.instantiateInitialViewController()
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
}
...
在您的HotSpotRISViewController.swift
中func setURL(theURL: URL) {
DispatchQueue.main.async {
if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
self.url = appDelegate.myurl
}
}