首页 > 解决方案 > iOS-将数据添加到数组后执行Segue(Swift)

问题描述

我正在尝试执行将图像数组传递给新视图控制器的转场,但是在将图像添加到数组之前执行转场 - 我相信这是因为 URLSession,我用它来转换 url一个图像,需要时间。

将图像添加到数组后,我将如何让 Segue 执行?

我将网址转换为图像的代码:

// When selection is selected
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let overallArray = displayArray[indexPath.section]

    // Add Image 1 to imageArrayToBeSent
    if let imageUrl = overallArray.fullImage1 {
        let url = URL(string: imageUrl)
        URLSession.shared.dataTask(with: url!) { (data, response, error) in
            if error != nil {
                print(error!)
                return
            }
            DispatchQueue.main.async {
                self.imageArrayToBeSent.append(UIImage(data: data!)!)
            }

            }.resume()
    }

    // stringToBeSent = overallArray.fullImage1!
    performSegue(withIdentifier: "openNewViewController", sender: self)
}

我称之为 Segue 的代码:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
 let info = segue.destination as! NewViewController
     info.imageArray = self.imageArrayToBeSent
    print(self.imageArrayToBeSent)
 }

标签: iosswiftsegueurlsession

解决方案


在回调中执行

DispatchQueue.main.async {
    self.imageArrayToBeSent.append(UIImage(data: data!)!)
    self.performSegue(withIdentifier: "openNewViewController", sender: self)
}

推荐阅读