ios8 - 如果已经显示警报,则显示 UIAlertController

标签 ios8 uialertcontroller

遗留的区别UIAlertView和新 UIAlertController是后者需要通过 presentViewController:animated:completion: 呈现到特定的 View Controller 上。 .这给我的用例带来了一个尴尬的问题:如果已经有 UIAlertController 怎么办?当第二个 View Controller 出现时显示(例如评级对话框)(例如由于网络连接失败而导致的错误对话框)。在这种情况下,我经历过第二个 UIAlertController只是不显示。

编辑:目前我尝试显示警报,我不知道当前是否有任何显示。

你如何应对这种情况?

最佳答案

我找到了一种解决方法来找出我可以在哪个 View Controller 上显示警报。我也贴了答案here :

@implementation UIViewController (visibleViewController)

- (UIViewController *)my_visibleViewController {

    if ([self isKindOfClass:[UINavigationController class]]) {
        // do not use method visibleViewController as the presentedViewController could beingDismissed
        return [[(UINavigationController *)self topViewController] my_visibleViewController];
    }

    if ([self isKindOfClass:[UITabBarController class]]) {
        return [[(UITabBarController *)self selectedViewController] my_visibleViewController];
    }

    if (self.presentedViewController == nil || self.presentedViewController.isBeingDismissed) {
        return self;
    }

    return [self.presentedViewController my_visibleViewController];
}

@end

// To show a UIAlertController, present on the following viewcontroller:
UIViewController *visibleViewController = [[UIApplication sharedApplication].delegate.window.rootViewController my_visibleViewController];

关于ios8 - 如果已经显示警报,则显示 UIAlertController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26419458/

相关文章:

ios - 以编程方式开发 iOS 用户界面

xcode - CFString 不符合 Hashable 协议(protocol)?

swift - 如何获取使用 ALAssetsLibrary 保存的照片的 url?

ios - 如何在 Swift 中为多个 UIActionSheet 创建通用方法

swift - 如何在 UIAlertController 中的 UITextField 之后插入 UILabel

ios - 如何在 Swift 中将 TextField 添加到 UIAlertController

ios - inputAccessoryView 在 alertController (actionSheet) 出现时动画化

ios - 在 Swift 中点击返回键时,如何关闭 UIAlertController?

swift - Swift 中的 MPMoviePlayerController

ios - 使用 UIScrollView 和多个 UIButtons 延迟滚动