从任何地方呈现全屏模式,无需参考当前的ViewController

时间:2016-03-09 11:27:28

标签: ios objective-c uiviewcontroller safari presentviewcontroller

我想在不了解当前ViewController层次结构的情况下呈现全屏ViewController。我目前的解决方案是找到我可以随时呈现全屏ViewController的ViewController,如下所示:

+ (UIViewController*) topMostController
{
    UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;

    while (topController.presentedViewController) {
        topController = topController.presentedViewController;
    }

    return topController;
}

我需要这个的背景:我们的应用程序使用了很多

[[UIApplication sharedApplication]openURL:[NSURL urlWithString:@"http://www.someurl.com"]];

从外部打开Safari的调用。 Apple开始拒绝这一点,因为他们认为这会对用户体验产生不利影响,我们应该使用SFSafariViewController。但是与openURL不同,这需要对ViewController的引用,我们可以在其上呈现SFSafariViewController。我不想在几十个地方更改代码以获取适当的ViewController,而是一个通用的方法可以获得适当的ViewController。我列出的代码每次都在我们的应用程序中工作,但我不确定它是否真的具有普遍性。

0 个答案:

没有答案