我在我的應用中的以下設置: 如何從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