首页 > 解决方案 > 在 MVVM 中的 viewController 之间传递数据

问题描述

我无法从我collectionViewController的 to传递数据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
    }
}

标签: iosswiftmvvm

解决方案


推荐阅读