Ich mache eine App für iPad mit RXSwift und MVVM.Was wäre die richtige MVVM-Architektur für einen UICollectionViewController
Ich habe einen UIViewController mit einem UICollectionView und einem ViewModel, die als dataSource und der Delegate für die CollectionView fungiert.
Ein Teil der Funktionen der Erfassungszellen besteht darin, dass ein Knopf gedrückt wird, um ein Popover anzuzeigen. Jetzt mit der neueren Popover-Funktionalität in iOS 9 (möglicherweise früher) müssen Sie die Ansicht normalerweise innerhalb des View-Controllers präsentieren und den popoverPresentationController ändern.
Nun, soweit ich weiß, Sie sind nicht in der Lage, eine UIViewController von einer UICollectionViewCell zu präsentieren. Macht Sinn.
Aber die einzige Möglichkeit, dies zu tun, wäre, einen Delegaten zu haben, der auf den ViewController zeigt.
Mit Blick auf das Klassendiagramm (im Anhang) müsste das ViewModel den Delegaten beim Entfernen der Zelle einstellen. Um das zu tun, müsste das ViewModel wissen, was ViewController als den Delegaten einstellen soll, von dem ich ziemlich sicher bin, dass es gegen den Punkt des viewModel geht. Laut MVVM (für iOS) sollte das View-Modell den View-Controller nicht kennen. Der View-Controller kann das View-Modell kennen.
Und meine Frage ist, was wäre der beste Weg, dies nach MVVM zu tun? Wenn es erforderlich ist, die dataSource/Delegate in eine andere Klasse zu verschieben, bin ich dafür.