Passing model back and forth between views using SwiftUI and MVVM

Hi,

I am using SwiftUI and I have five screens, with forms and I can go trough those screens back and forth. All of those screens have a purpose to collect different user input. At the end, I need to assemble one object / struct which will hold all that data.

As I am using MVVM architecture, first thing I tried was to have one general view model class, and define it as @StateObject in first view. Then I would pass it to other views where its defined as @ObservedObject. Now, that view model had a hidden dependency which was my model object which was populated as going trough screens and edited when going back and forth trough screens.

Now this general view model became quite big very fast, so I was like lets split it up into five view models, and separate logic for each screen in its own view model. Which is nice. But I have a problem, how to handle model now, cause at first it was owned by general view model. Now all new view models must be aware of it.

So the question is, how I would pass my model back and forth between views? (or its better to say view models).

Communication goes only with to the direct ancestor / predecessor. So for example you can go from screen 1 -> 2 -> 3 and back 3 -> 2 -> 1.. It cant happen something like going from 1 to 3 directly, or vice versa...

What would be a good and usual setup here while following MVVM?