#ios #swift #url
Вопрос:
Этот код находится в контроллере FirstView —
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print("User tapped on image (indexPath.row)")
let myImageViewPage: MyImageViewController = self.storyboard?.instantiateViewController(withIdentifier: "MyImageViewController") as! MyImageViewController
myImageViewPage.selectedImage = self.results[indexPath.row].urls.regular
self.navigationController?.pushViewController(myImageViewPage, animated: true)
}
VC принимает изображения из results
массива
Результаты-это массив Result
структуры, который является
struct Result: Codable {
let id: String
let urls: URLS
}
struct URLS: Codable {
let regular: String
}
Контроллер Второго Вида
Это работает аналогичным образом
class MyImageViewController: UIViewController {
@IBOutlet weak var myImageView: UIImageView!
var selectedImage: String!
override func viewDidLoad() {
super.viewDidLoad()
// Download image in the MyImageViewController
guard let url = URL(string: self.selectedImage) else { return }
downloadImage(from: url)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard let url = URL(string: self.selectedImage) else {
return
}
let task = URLSession.shared.dataTask(with: url) { data, _, error in
guard let data = data , error == nil else {
return
}
DispatchQueue.main.async {
let image = UIImage(data: data)
self.myImageView.image = image
}
}
task.resume()
}
В чем может быть проблема, из-за которой изображение большего размера не открывается в SecondVC?
Я искал везде и не мог найти из-за изображений Url, которые берут изображения из Интернета.
Заранее спасибо
Комментарии:
1. Помогите себе в выяснении разницы между
viewDidLoad
иviewWillAppear
.2. Почему вы ожидаете, что он откроет изображение большего размера? Больше ли загруженный файл? У вас есть другой размер UIImageView? Есть ли у вас какие-либо ошибки? И если да, то каковы они? Здесь недостаточно информации о том, что загружается или как оно отображается, чтобы мы могли вам помочь.
3. @flanker На самом деле я не ошибся и просто посмотрел учебник по YouTube, чтобы показать его на новом экране, а также применил его в своем сценарии, но не смог мне помочь
4. @ElTomato Во втором контроллере представления?
5. Если бы вы знали цель
viewDidLoad
в целом, вы бы заметили основную, но важную ошибку, которую вы совершаете в любом контроллере представления.