Передача данных из ViewModel в другой на iOS MVVM - PullRequest
0 голосов
/ 15 февраля 2019

Я новичок в MVVM, поэтому у меня возникли проблемы с реализацией простого приложения.Допустим, у меня есть экран OrderViewController:

class OrderViewController: UIViewController {
    var viewModel = OrderViewModel()
}

class OrderViewModel {
    var order = Order()
}

У меня есть другой экран ProductsViewController, который можно открыть с OrderViewController:

class ProductsViewController: UIViewController {
    var viewModel = ProductsViewModel()
}

class ProductsViewModel {
    var order: Order?
}

Некоторые логики внутри ProductsViewModel зависит от order модели, поэтому я должен передать order от OrderViewModel до ProductsViewModel.Как я могу сделать это, не ломая MVVM?Если я просто сделаю это:

class OrderViewController: UIViewController {
    var viewModel = OrderViewModel()

    func showProductsViewController() {
        let vc = ProductsViewController()
        vc.viewModel.order = self.viewModel.order
        self.navigationController?.pushViewController(vc)
    }
}

Это неправильно, потому что я ссылаюсь на модель (order) из вида (OrderViewController)?

1 Ответ

0 голосов
/ 15 февраля 2019
class ProductsViewModel {
    var order: Order?

    init(order : Order) {
        self.order = order
    }
}

class ProductViewController {
     var viewModel : Product?
     init(viewModel : Order) {
         self.viewModel = ProductsViewModel(order : viewModel)
     }
}

и назовите это

func showProductsViewController() {
    let vc = ProductsViewController(viewModel : order)
    self.navigationController?.pushViewController(vc)
}

Почему?

Это потому, что в MVVM каждая viewModel привязана к одному ViewController.ProductViewModel до ProductViewController, OrderViewModel до OrderViewController.ViewController не должен знать, какие данные я должен передать другому ViewController.

Весь ответ здесь

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