Je garderai cela aussi court que possible: nous avons commencé l'application Full Rxswift, mais nos coordinateurs ont commencé à être dépassés de maintenir et de prolonger afin de ne pas utiliser RxSwift et que nous ne pouvons maintenant pas comprendre comment utiliser eux et où les garder. p>
Exemple le plus simple: Visualiser le contrôleur avec 1 bouton, afficher le modèle, le coordinateur.
Où dois-je appeler Je ne veux pas trop ingénieur, mais j'espère avoir une aide perspicace. P> coordinator.navigate (à: .Mysection) code> et comment? Le coordinateur devrait-il être conservé dans le contrôleur d'affichage? Je pensais qu'ils devraient être conservés dans le modèle d'affichage mais que l'inscription dans le modèle de vue n'est pas l'utilisation recommandée. P>
3 Réponses :
Si vous souhaitez utiliser le coordinateur comme une dépendance de votre viewModels, consultez cette bibliothèque: action a >. P>
action vous permet de lier l'action à partir d'un bouton avec la vue. Vous définissez juste une action dans votre viewmodel et la lie à la vue. Le type d'action n'est qu'une séquence qui admet une autre séquence en entrée et renvoie une autre séquence comme sortie. Donc, vous n'avez pas besoin d'utiliser un décompage sur votre viewModel. P>
Si vous souhaitez voir des exemples, la caisse du projet GitHub's de l'action ou, si vous souhaitez voir des exemples d'applications, le Ray Wenderlich Rxswift Book a un exemple assez soigné sur la manière d'intégrer MVVM et les coordinateurs. P>
Aucun des éléments MVVM Adresse directement dans Viper, le R représente routage fort> qui convient parfaitement à la définition des coordinateurs. P>
Deux choses que j'aime vraiment suggérer sont: p>
P.s. MVVM est génial mais ce n'est pas évolutif, je suggère humblement de jeter un coup d'œil à Viper. Voici Un bon article que vous pouvez trouver utile. p> Coordinateurs Code> Donc, si vous utilisez les avantages du modèle de coordonnateur de Soroush, vous utilisez probablement VIPER, mais vous n'êtes peut-être pas au courant de cela, ce qui n'est pas vraiment important. p>
uiviewcontroller code> s mais strong> j'ai personnellement demandé à Soroush à ce sujet et il a répondu: c'est Pas la meilleure pratique avec les coordinateurs. J'ai donc utilisé seulement deux coordinateurs dans ma dernière application et assez heureux avec le résultat. Li>
Je ne pense pas que nous utilisions Viper depuis l'architecture et la mise en œuvre est différente; Merci de le suggérer, mais il est trop écrasant pour ce que nous devons faire et que nous avons trouvé que MVVM soit le bon ajustement pour l'instant. Pour le moment, nous avons un coordinateur pour chaque section de l'application composée de 3 à 4 VC. Je suppose que, étant donné que le contexte dépend des VCS, c'est là que nous devrions mettre nos coordinateurs. Merci!
@Matiac. Vous êtes libre de l'appeler ce que vous voulez, c'est un peu important de goûter. Personnellement croire, si vous utilisez le motif de coordinateur avec MVVM, vous pouvez l'appeler Viper. Néanmoins, le nom n'est pas important. Je te souhaite bonne chance. 😊
@Matiac. L'architecture MVVM n'a pas d'élément de routage B>, Zich est juste, si vous avez ajouté des coordinateurs à MVVM, vous avez une vipère. Tout comme lorsque vous ajoutez viewModel à MVC, vous avez un MVVM. Parfois, nous n'avons pas besoin d'avoir toutes les parties d'une architecture dans notre application, mais cela ne signifie pas que nous n'utilisons pas cette architecture.
Je recommanderais d'aller avec Xcoordinator et leur architecture proposée MVVM-C, j'ai utilisé dans 2 applications grandes / compliquées et cela a été une brise. P>