我有一个表视图,加载时,每个单元格都可能返回NSError,这是我 Select 在UIAlertController中显示的.问题是,如果返回多个错误,我会在控制台中收到此错误.

警告:try 在已在显示的MessagesMasterVC:0x14e53d800上显示UIAlertController:0x14e64cb00(空)

理想情况下,我希望在我的UIAlertController扩展方法中处理此问题.

class func simpleAlertWithMessage(message: String!) -> UIAlertController {

    let alertController = UIAlertController(title: nil, message: message, preferredStyle: UIAlertControllerStyle.Alert)
    let cancel = UIAlertAction(title: "Ok", style: .Cancel, handler: nil)

    alertController.addAction(cancel)
    return alertController
}

根据matt的回答,我将扩展名改为UIViewController扩展名,它更干净,并节省了大量presentViewController代码.

    func showSimpleAlertWithMessage(message: String!) {

    let alertController = UIAlertController(title: nil, message: message, preferredStyle: UIAlertControllerStyle.Alert)
    let cancel = UIAlertAction(title: "Ok", style: .Cancel, handler: nil)

    alertController.addAction(cancel)

    if self.presentedViewController == nil {
        self.presentViewController(alertController, animated: true, completion: nil)
    }
}

推荐答案

"已经呈现"的不是UIAlertController,而是MessagesMasterVC.一个视图控制器一次只能显示另一个视图控制器.因此出现了错误消息.

换句话说,如果您已将视图控制器设置为presentViewController:...,则在取消显示的视图控制器之前,不能再次执行此操作.

您可以通过判断MessagesMasterVC的presentedViewController来询问它是否已经提供了一个视图控制器.如果不是nil,不要告诉它presentViewController:...-它已经呈现了一个视图控制器.

Ios相关问答推荐

为什么controlSize属性在SwiftUI中不起作用?

在SwiftUI中使用系统图像和色调创建圆形按钮

在带有可编码的SWIFT5中,可以轻松处理以美元符号开头的JSON密钥,例如$DATE";

如何在iOS中以编程方式推送另一个页面?

XcodeCloud生成失败,返回";ci_pre_xcodeBuild.sh是可执行文件,但退出时返回2个退出代码.";

如何在SwiftUI中实现淡入淡出加粘标题屏幕效果

更改初始控制器无效

iOS设备网页自动化中,在向字段发送文本后未启用按钮

Flutter动画放大图

查找东南亚语言(泰语、高棉语、老挝语、缅甸语)中的单词边界

具有一个参数/参数的泛型类的泛型类

在所有 tableview / collectionview 中禁用滚动指示器

如何为视图的 colored颜色 和宽度设置动画?

本月使用 iOS 的天数?

Xcode 6 App Store 提交失败并显示您的帐户已经拥有有效的 iOS 分发证书

iPhone iOS 无法正确显示 box-shadow

如何在 iOS 的 xib 中设置十六进制 colored颜色 代码

IOS - 从 UITextView 中删除所有填充

如何删除 Swift 数组中的所有 nil 元素?

如何检测快速touch 或单击的tableView单元格