Передача данных между viewControllers в MVVM - PullRequest
0 голосов
/ 24 мая 2019

У меня проблемы с передачей данных из моего 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...