我想从驻留在可通过共享实例访问的实用工具类中的某些代码中呈现MFMailComposerViewController。

当我尝试

[self presentViewController:mailVC animated:YES completion:nil];


我收到一个错误,表示视图不在视图层次结构中,这很有意义。

当我尝试使用navigationController时:

[self.navigationController presentViewController:mailVC animated:YES completion:nil];


没有错误发生,但是什么也没有发生。

我应该从调用sharedInstance的VC中呈现它,但我不知道如何从共享实例中引用它,这是有道理的。

感谢您对执行此操作的任何建议。

最佳答案

您可以从最顶视图的控制器中显示它。这是我要做的一件事情。

+ (UIViewController *)topViewController {
    UIViewController *topController = [[UIApplication sharedApplication].windows firstObject].rootViewController;

    if ([topController isKindOfClass:[UINavigationController class]]) {
        topController = [[(UINavigationController *)topController viewControllers] lastObject];
    }

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

        if ([topController isKindOfClass:[UINavigationController class]]) {
            topController = [[(UINavigationController *)topController viewControllers] lastObject];
        }
    }

    return topController;
}

关于ios - 来自实用程序类的sharedInstance的presentViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53565926/

10-12 04:01