iOS - заставить Segue выполнять после добавления данных в массив (Swift) - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь выполнить переход, который передает массив изображений в новый контроллер представления, но переход выполняется до того, как изображения добавляются в массив - я полагаю, это потому, что URLSession, который я использую для конвертировать URL в изображение, занимает время.

Как бы я мог выполнить Segue после добавления изображений в массив?

Мой код, где URL-адрес превращается в изображение:

// 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)
 }

1 Ответ

0 голосов
/ 07 сентября 2018

Сделай это внутри обратного вызова

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