在 tableView 的单元格内显示弹出窗口

问题描述 投票:0回答:1

我有一个结构文件,我在其中处理来自 json 文件的数据,并希望在解码结果为零或类似时显示弹出窗口。

但我注意到我无法在单元格或结构中显示弹出窗口。那么我该如何解决这个问题呢?我想我必须在 tableView 所在的类中声明该函数,但是如何访问我的结构中的函数?

结构searchApi:

     ...
        func newParseJSON(poiData: Data, completionHandler: @escaping () -> Void) {
            let decoder = JSONDecoder()
            do {
                let decodedData = try decoder.decode(POIData.self, from: poiData)
                searchApi.dataFromSearchApi = decodedData.results
                
                func displayAlert() {
                          let dialogMessage = UIAlertController(title: "Json Empty", message: "....", preferredStyle: .alert)
                          let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in
                              print("Ok button tapped")
                          })
                          dialogMessage.addAction(ok)
                          self.present(dialogMessage, animated: true, completion: nil)
                          
                      }
                
//set condition for showing displayAlert
                displayAlert()
        
                completionHandler() // Call the completion handler when data is parsed
                
            } catch {
                print(error)
            }
            
        }...

我的另一个类叫做:SearchPoi 类

swift class struct tableview
1个回答
0
投票

您的代码没有任何异步内容,因此这里不需要完成处理程序。

假设您的类型与上一个问题中的类型相同,则该函数可以重写为

func newParseJSON(poiData: Data) throws -> [Result] {
    try JSONDecoder().decode(POIData.self, from: poiData).results
}

按照我的喜好或者如果您想使用

self
如问题中那样

func newParseJSON(poiData: Data) throws {
    searchApi.dataFromSearchApi = try JSONDecoder().decode(POIData.self, from: poiData).results
}

然后处理错误并在调用此函数时显示任何错误消息。

© www.soinside.com 2019 - 2024. All rights reserved.