如何从AppDelegate实例化UIViewController?

时间:2017-04-04 03:23:12

标签: ios swift xcode uiviewcontroller ios-universal-links

我的应用中有以下设置: Storyboard setup

有一个容器视图,它包含3个视图控制器(A,B和C)。我可以通过向左或向右滑动来切换A,B或C. A或B都包含自己的集合视图。如果我点击A或B内的集合视图中的任何单元格,则会启动PlayerVC(在上面的图片中命名为Player ^^)并使用AVPlayer开始播放视频。

问题是:

  • 此应用可以共享Universal Links,因此当用户点按universal link时,会将其直接带到应用,启动PlayerVC,然后开始播放视频。问题是如果用户点击PlayerVC时直接转到universal link,我该如何初始化其他视图控制器?或者如何从PlayerVC
  • 转到app delegate

以下是一些情景:

  • 如果用户被直接转到PlayerVC,那么如果他们解雇PlayerVC应用程序崩溃。
  • 如果该应用已经启动但处于后台模式,请说用户在view controller B,然后当用户点击universal link时,如何从{{{{}}开始1}}到view controller B

这是PlayerVC中的委托方法,当用户点击app delegate时会调用该方法(请注意universal link评论):

HELP

注意: 我们的应用程序运行的是iOS 10.我们正在使用Apple的新通用链接:https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  

问题是:

     

这个应用程序能够共享通用链接,以便当用户点击一个   通用链接,它将它们直接带到应用程序,启动   PlayerVC,并开始播放视频。问题是我该怎么做   如果直接用户,则初始化其他视图控制器   PlayerVC如果点击通用链接?或者如何到达   来自app delegate的PlayerVC?

对于这个问题,您需要首先实例化容器及其子视图控制器,然后才能显示PlayerVC

  

如果用户被直接带到PlayerVC,那么他们是否会被解雇   应用程序崩溃的PlayerVC。

通过我告诉你的实施,它不应该崩溃。总会有一个容器控制器实例化

  

如果应用已经启动但是处于后台模式,请说出来   用户在视图控制器B中,然后当用户点击通用时   链接,如何从视图控制器B转到PlayerVC?

您可以在AppDelegate中存储容器控制器的全局变量。通过此操作,您可以访问控制器B.然后您可以调用

container.present(playerVC, animated: true, completion: nil)