RXSwiftとMVVMを使ってiPad用のアプリを作っています。
UICollectionView を持つ UIViewController と、dataSource および collectionView のデリゲートとして機能する ViewModel があります。
コレクション セルの機能の一部は、ボタンをタップしてポップオーバーを表示することです。現在、iOS 9 (おそらくそれ以前) の新しいポップオーバー機能では、View Controller 内で通常どおりビューを表示し、popoverPresentationController を変更する必要があります。
さて、私が知る限り、UICollectionViewCell から UIViewController を提示することはできません。理にかなっています。
しかし、これを行う唯一の方法は、ViewController を指すデリゲートを持つことです。
クラス ダイアグラム (添付) を見ると、viewModel はセルのデキュー時にデリゲートを設定する必要があります。これを行うには、ViewModel は、どの ViewController をデリゲートとして設定するかを知る必要があります。これは、viewModel のポイントに反すると確信しています。MVVM (for iOS) によると、ビュー モデルはビュー コントローラーについて認識すべきではありません。ビューコントローラーは、ビューモデルについて知ることができます。
それで私の質問は、MVVMに続いてこれを行うための最良の方法は何ですか? dataSource/Delegate を別のクラスに移動する必要がある場合は、それで十分です。