は、私は私のアプリでは次のセットアップを持っている: AppDelegateからUIViewControllerをインスタンス化する方法は?
は3つのビューコントローラ(A、BおよびC)を保持するコンテナのビューがあります。私は左または右にスワイプすることでA、BまたはCから切り替えることができます。 AまたはBの両方に独自のコレクションビューが含まれています。 AまたはB内のコレクションビューの任意のセルをタップすると、PlayerVC(上記の図のPlayerが^^)が起動し、ビデオはAVPlayer
を使用して再生を開始します。
問題がある:
- このアプリは、ユーザーが
universal link
上でタップしたときにそうUniversal Links
を共有することができ、それは、アプリに直接それらを取るPlayerVC
を起動し、ビデオの再生を開始します。問題は、ユーザーがuniversal link
をタップした場合にPlayerVC
に直接移動した場合、他のView Controllerをどのように初期化するのですか?またはPlayerVC
にアクセスする方法をapp delegate
からですか?ここで
いくつかのシナリオです:
- 彼らは
PlayerVC
アプリのクラッシュを閉じた場合、ユーザは、その後、PlayerVC
に直接取られている場合。 - アプリが既に起動していてバックグラウンドモードの場合、ユーザーが
view controller B
であったとしたら、ユーザーがuniversal link
をタップすると、view controller B
からPlayerVC
に移動するにはどうすればよいですか?
これはuniversal link
は、ユーザ(HELP
コメントを何卒ご了承下さい)でタップしたときに呼び出されるapp delegate
でデリゲートメソッドです:
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を実行しています。ユニバーサルリンク用のAppleの新しいapiを使用しています:https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html
コメントありがとうございます。私の問題に基づいてコンテナとその子ビューコントローラをどのようにインスタンス化するのですか?コードサンプルを提供できますか?ありがとう – JEL