Swift 场景 userActivity NSUserActivity 传你 viewController
Posted
技术标签:
【中文标题】Swift 场景 userActivity NSUserActivity 传你 viewController【英文标题】:Swift scene userActivity NSUserActivity pass tu viewController 【发布时间】:2020-12-09 21:00:01 【问题描述】:我有一个问题。 在“类 SceneDelegate”中
func scene(_ scene: UIScene, continue userActivity: NSUserActivity)
let url = userActivity.webpageURL
print(url) //result is www.mywebsite.com
如何将此 url 传递给我的 ViewController???
【问题讨论】:
这能回答你的问题吗? ***.com/questions/64162820/… 【参考方案1】:这取决于您拥有的视图控制器层次结构,但假设您有一个 UITapBarController
作为您的根视图控制器,并且您希望最终到达导航控制器内的视图控制器:
func scene(_ scene: UIScene, continue userActivity: NSUserActivity)
let url = userActivity.webpageURL
if let windowScene = scene as? UIWindowScene
for window in windowScene.windows
if let rootViewController = window.rootViewController
let storyboard = UIStoryboard(name: "Main", bundle: nil)
if let yourVC = storyboard.instantiateViewController(withIdentifier: "YourVC") as? YourViewController,
let tabBarController = rootViewController as? UITabBarController,
let navController = tabBarController.selectedViewController as? UINavigationController
yourVC.data = url
navController.pushViewController(yourVC, animated: true)
更新
func scene(_ scene: UIScene, continue userActivity: NSUserActivity)
let url = userActivity.webpageURL
if let windowScene = scene as? UIWindowScene
for window in windowScene.windows
if let rootViewController = window.rootViewController
let storyboard = UIStoryboard(name: "Main", bundle: nil)
if let yourVC = storyboard.instantiateViewController(withIdentifier: "EventViewController") as? EventViewController,
let navController = rootViewController as? UINavigationController
yourVC.data = url
navController.pushViewController(yourVC, animated: true)
【讨论】:
Hey Kevvv,我调整了这一行(让 yourVC = storyboard.instantiateViewController(withIdentifier: "EventViewController") as?EventViewController,) EventViewController 是我的第二个 ViewController,但应用程序已经打开了第一个 VC。并且在这两种情况下都不会传递数据。 (是的,我在 VC 中定义了变量 :)) 当你说“第二个视图控制器”时,它是标签栏控制器还是导航控制器中的第二个?如果您执行self.view.window?.rootViewController
,它会显示什么?另外,您的 EventViewController
是否有一个名为 EventViewController
的故事板 ID?
首先我有一个 NavigationController(初始)然后我有标准 ViewController StoryboardID (ViewController) 和第二个 ViewController,如果我粘贴 self.view.window?.rootViewController 到 StoryboardID (EventViewController)场景我遇到问题“'SceneDelegate'类型的值没有成员'view'”
您必须将self.view.window?.rootViewController
粘贴到视图控制器的viewDidLoad
方法中。
然后我看到了“ViewController”以上是关于Swift 场景 userActivity NSUserActivity 传你 viewController的主要内容,如果未能解决你的问题,请参考以下文章
我必须将目标 c 代码转换为 swift 3.0,尝试在线转换时出错
尽管 Firebase 深层链接成功打开应用程序,但未调用“继续 userActivity”方法
java.lang.ClassCastException: com.liuyang.annocation.UserAction cannot be cast to com.liuyang.annoca