有一個容器視圖可容納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)
......
你通常如何初始化Container VC?那不在'didLaunchWithOptions'中嗎? – dmorrow
嘿,我只是在我的示例中添加了更多的代碼,顯示了它的完成情況。謝謝 – user7097242
實際上ContainerVC正在通過故事板進行初始化。 – user7097242