ios - 在另一个文件的函数的主视图中显示警报

标签 ios swift uialertcontroller

我有这个代码:

主视图 Controller :

func errorLoginMessage(txt: String, title: String){
        let alertController = UIAlertController(title: title, message: txt, preferredStyle: .alert)
        alertController.addAction(UIAlertAction(title: "Ok".localized(), style: .cancel, handler: { (action: UIAlertAction!) in
            exit(0)
        }))
        self.present(alertController, animated: true, completion: nil)
    }

以及函数 AppSystem.swift 中的文件:

func startUpdate(){ 
        let dispatchGroup = DispatchGroup()
        dispatchGroup.enter()

        let cms = ServerConnect()
        cms.getJsonProducts(completion: { (data) in
            switch data {
            case .succes(let data):
                self.saveJsonFileToTheDiskProducts(downloadData: data)
            case .error(let error):
                self.errorLoginMessage(txt: "MainView - Error 101: Configuration files can not be created. \(error)", title: "Blad".localized())
                print("")
                break
            }
            dispatchGroup.leave()
        })
    }

我对此有错误:

self.errorLoginMessage(txt: "MainView - Error 101: Configuration files can not be created. \(error)", title: "Blad".localized())

:“AppSystem”类型的值没有成员“errorLoginMessage”

有谁知道怎么解决吗?

最佳答案

由于警报不是您的 AppSystem 类的一部分,因此您需要将消息传递给 MainViewController 以在出现故障时显示消息。

您可以使用委托(delegate)通知完成 block ,这是完成 block 的示例:

func startUpdate(completion:@escaping(Bool)->()){
     // No need of DispatchGroup as pointed by Anbu.Karthik, as with completion block you are making this function work asynchronously only.
    //let dispatchGroup = DispatchGroup()
    //dispatchGroup.enter()

    let cms = ServerConnect()
    cms.getJsonProducts(completion: { (data) in
        switch data {
        case .succes(let data):
            self.saveJsonFileToTheDiskProducts(downloadData: data)
            completion(true)
        case .error(let error):
            completion(false)
            //self.errorLoginMessage(txt: "MainView - Error 101: Configuration files can not be created. \(error)", title: "Blad".localized())
            print("")
            break
        }
        //dispatchGroup.leave()
    })
}

MainViewController中这样调用它:

startUpdate { (success) in
    if !success {
        //Show alert
        self.errorLoginMessage(txt: "MainView - Error 101: Configuration files can not be created. \(error)", title: "Blad".localized())
    }
}

关于ios - 在另一个文件的函数的主视图中显示警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50759827/

相关文章:

ios - 如何有选择地向 UIWebView 添加样式表?

ios - bundle 无效。提交到 App Store 的新应用程序和更新必须使用公共(public)构建

swift - 角不是 UILabel 和 UIbutton 的圆形 ios swift

IOS 以编程方式创建 UIAlertViewController

ios - Objective-C - 我希望 UIAlertController 在单击按钮时不被删除

iphone - 我如何知道我的 iPhone/iPad 连接的是 2G 还是 3G?

ios - 当所有文本被选中时,UITextView 改变位置

garbage-collection - 在 Swift 中,程序员负责打破对象之间的循环吗?

Swift dispatch_async 导致 EXC_BAD_ACCESS 错误

swift - UIAlertView 没有出现