我在我的应用中的以下设置: 如何从AppDelegate实例化UIViewController?
有保持3个视图控制器(A,B和C)的容器图。我可以通过向左或向右滑动来从A,B或C切换。 A或B都包含它们自己的集合视图。如果点击A或B内的收藏视图中的任何单元格,PlayerVC(上图中的名为Player的播放器)将启动,并且视频开始使用AVPlayer
播放。
的问题是:
- 这个程序是能够分享
Universal Links
所以当用户点击一个universal link
,它直接将他们的应用程序,启动PlayerVC
,并开始播放视频。问题是如何初始化其他视图控制器,如果用户被直接带到PlayerVC
,如果他们点击universal link
?或者如何从app delegate
到PlayerVC
?
这里是一些假设:
- 如果用户直接带到
PlayerVC
,那么如果他们解雇PlayerVC
应用程序崩溃。 - 如果应用程序已经启动,但在后台模式下,假设用户在
view controller B
,那么当用户点击universal link
时,我该如何从view controller B
到PlayerVC
?
这是app delegate
委托方法时universal link
由用户点击(请注意HELP
评论)被调用:
class AppDelegate: UIResponder, UIApplicationDelegate {
// Other App Delegate methods.....
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
// 1) Make sure the passed `user activity` has expected characteristics.
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL else {
return false
}
// HELP: I need to get to `PlayerVC` from here?
return true
// If we can't do the above we default to opening the page in safari
}
}
注: 我们的应用程序在运行iOS的10。我们正在为Universal Links使用Apple的新api:https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html
有什么想法?
嘿谢谢你的意见。基于我的问题,我将如何去实例化容器及其子视图控制器?你能提供一个代码示例吗?谢谢 – JEL