我想从一些代码中展示一个 MFMailComposerViewController,这些代码深藏在可通过共享实例访问的实用程序类中。
当我尝试时
[self presentViewController:mailVC animated:YES completion:nil];
我收到一个错误,表示呈现 View 不在 View 层次结构中,这是有意义的。
当我尝试使用导航 Controller 时:
[self.navigationController presentViewController:mailVC animated:YES completion:nil];
没有发生错误,但什么也没有发生。
我应该从调用 sharedInstance 的 VC 中呈现它是有道理的,但我不知道如何从共享实例中引用它。
感谢您提供有关如何执行此操作的任何建议。
最佳答案
您可以从最顶层的 View Controller 中呈现它。这是我为了得到一个所做的。
+ (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/