有一个容器视图,其中包含3个视图控制器(V1、V2和V3)。我能够通过向左或向右滑动来从A、B或C进行切换。A或B都包含它们自己的集合视图。如果我在A或B中的任何单元格上点击,PlayerVC(上面的图片中名为Player)将启动,并使用AVPlayer播放视频。
问题是:由于我使用了通用链接,用户直接进入playerView播放视频,但当他们按下完成按钮时,应用程序会崩溃。我认为问题是因为其余的视图控制器没有被初始化?如何初始化容器视图和其他视图控制器?或者如果这不是问题,请告诉我问题是什么。
这是带有一些示例代码的应用程序委托。如果可能,请提供代码以帮助解决问题!
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if let pagingViewController = window?.rootViewController as? PagingViewController {
pagingViewController.videoPlaybackManager = videoPlaybackManager
}
return true
}
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
}
}
编辑 - 我在 PagingViewController(容器视图)中实例化3个VC的附加代码如下:
private func setupViewControllers() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
page1 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.feedViewController.rawValue) as! FeedViewController
page1.view.translatesAutoresizingMaskIntoConstraints = false
page1.delegate = self
scrollView.addSubview(page1.view)
addChildViewController(page1)
page1.didMove(toParentViewController: self)
// Inject dependency.
page1.videoPlaybackManager = videoPlaybackManager
page2 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.favoritesViewController.rawValue) as! FavoritesViewController
page2.view.translatesAutoresizingMaskIntoConstraints = false
page2.delegate = self
scrollView.addSubview(page2.view)
addChildViewController(page2)
page2.didMove(toParentViewController: self)
page3 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.settingsViewController.rawValue) as! SettingsViewController
page3.view.translatesAutoresizingMaskIntoConstraints = false
scrollView.addSubview(page3.view)
addChildViewController(page3)
page3.didMove(toParentViewController: self)
......
didLaunchWithOptions
中吗? - dmorrow