首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从UIViewController中实例化AppDelegate?

如何从UIViewController中实例化AppDelegate?
EN

Stack Overflow用户
提问于 2017-04-04 03:23:12
回答 1查看 274关注 0票数 0

我的应用程序中有以下设置:

有一个容器视图,它包含3个视图控制器(A、B和C)。我可以从A,B或C转左或右。A或B都包含它们自己的集合视图。如果我点击A或B内集合视图中的任何单元格,PlayerVC (在上面的图^中指定的播放器)将启动,视频开始使用AVPlayer播放。

问题是:

  • 这个应用程序能够共享Universal Links,所以当用户点击universal link时,它会直接将他们带到应用程序,启动PlayerVC,并开始播放视频。问题是,如果用户直接被带到PlayerVC (如果用户点击universal link ),那么如何初始化其他视图控制器?或者如何从PlayerVCapp delegate

以下是一些场景:

  • 如果用户被直接带到PlayerVC,那么如果他们拒绝使用PlayerVC,应用程序就会崩溃。
  • 如果应用程序已经启动,但处于后台模式,假设用户处于view controller B状态,那么当用户点击universal link时,我如何从view controller B转到PlayerVC

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

代码语言:javascript
复制
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。我们正在使用苹果新的:https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-04-04 04:14:35

问题是: 这个应用程序能够共享通用链接,所以当用户点击一个通用链接时,它会直接将它们带到应用程序,启动PlayerVC,并开始播放视频。问题是,如果用户直接被带到PlayerVC,如果用户点击了一个通用链接,那么如何初始化其他视图控制器?或者如何从应用程序委托到PlayerVC?

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

如果用户被直接带到PlayerVC,那么如果他们拒绝使用PlayerVC,应用程序就会崩溃。

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

如果应用程序已经启动,但处于后台模式,假设用户处于视图控制器B中,那么当用户点击通用链接时,如何从视图控制器B转到PlayerVC?

您可以在AppDelegate中存储容器控制器的全局变量。这样您就可以访问控制器B,然后就可以调用

代码语言:javascript
复制
container.present(playerVC, animated: true, completion: nil)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43197681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档