У меня проблемы с передачей данных из моего collectionViewController
в detailViewController
.
Я сейчас пытаюсь выучить MVVM
, и это меня немного смущает. В MVC
это довольно просто, но в MVVM
у меня проблемы с этим.
Мой MainViewModel
:
struct CatViewModel {
let catImage: String
// Dependency Injection
init(catImage: CatModel) {
self.catImage = catImage.url
}
func detailViewModel(for indexPath: IndexPath) -> DetailsViewModel
{
return DetailsViewModel(catImage: catImage)
}
}
Мой detailViewModel
:
struct DetailsViewModel {
let catImage: String
}
Мой collectionViewCell
класс:
class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var imageViewCell: CustomImageView!
var catViewModel: CatViewModel! {
didSet {
setUpCellImage()
}
}
func setUpCellImage() {
if let cellImageUrl = catViewModel?.catImage {
imageViewCell.loadImageUsingUrlString(urlString: cellImageUrl)
}
}
Так как мне теперь передавать данные из моего detailViewController
? В MVC
это было бы просто, но не могу найти правильный ответ / как это сделать в MVVM
.
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let mainStoryboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let destVC = mainStoryboard.instantiateViewController(withIdentifier: "DetailViewController") as! DetailViewController
self.navigationController?.pushViewController(destVC, animated: true)
}
Мой detilViewController
класс:
class DetailViewController: UIViewController {
@IBOutlet weak var largeImageView: UIImageView!
var detailViewModel = [DetailsViewModel]()
var detailImage = UIImage()
override func viewDidLoad() {
super.viewDidLoad()
self.largeImageView.image = detailImage
}
}