Как передать другой URL следующему VC с подготовкой к переходу? - PullRequest
1 голос
/ 25 октября 2019

Я хочу передать другой URL-адрес следующему VC по сравнению с тем, какую ячейку выбрал пользователь в ходе моего подготовительного сеанса, но как я могу это сделать? Спасибо!

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let idGenderMovie = gendersDataModel[indexPath.row].id
    let urlString = "https://api.themoviedb.org/3/discover/movie?api_key=&with_genres=\(idGenderMovie)"
    performSegue(withIdentifier: "showMovies", sender: self)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    guard let showMovieFilteredVC = segue.destination as? ShowFilteredMovie else {return}
    showMovieFilteredVC.urlGender = //???
}

1 Ответ

1 голос
/ 25 октября 2019

Как говорит Мэтт в своем комментарии, вы знаете, какая ячейка была выбрана в вашем методе didSelectRowAt(). Вы извлекаете URL-адрес из вашей модели данных, используя выбранную пользователем строку, извлекаете некоторые данные из этого URL-адреса и затем перетаскиваете эту информацию на этаж.

Вместо этого создайте переменную экземпляра в вашем контроллере представления userSelectedRow иустановите его в вашем методе didSelectRowAt (). Затем, в вашем prepareForSegue, используйте выбранную строку, чтобы получить необходимую информацию и передать ее в целевой контроллер представления.

РЕДАКТИРОВАТЬ:

Или, как предлагает Мэтт, ничего не сохранять,Оставьте выбранную строку и в prepare(for:) запросите представление таблицы для выбранной строки и используйте ее для извлечения данных.

Кстати, если URL-адрес удаленного сервера, вам следует не читать, используя Data(contentsOf:). Это синхронный вызов, который блокирует ваш пользовательский интерфейс до его завершения. Вы можете заставить ваш пользовательский интерфейс зависать до 2 минут, пытаясь прочитать данные с удаленного сервера с помощью этого вызова. (И это приведет к тому, что ваше приложение будет убито как не отвечающее.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...