MVVMCross Unterstützung für Xamarin.iOS Storyboards
Mit Unterstützung für XS-integration von iOS storyboards rund um die Stabilen stream, ich würde gerne in der Lage sein, um diese Funktion zu verwenden in Verbindung mit MVVMCross.
Grundsätzlich scheint es ein wenig wie es nicht funktionieren sollte, als mit storyboards zeigen Navigations-Hierarchie in der Ansicht Projekt, eher als eine viewmodel-Projekt wie MVVMCross.
Aber es wäre fantastisch, wenn es eine Möglichkeit gibt die 2 arbeiten zusammen.
Weiß jemand wie das erreicht werden könnte?
Prost, Tristan
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist mindestens eine Probe veröffentlicht, die zeigen, die Verwendung von Storyboards - die eher seltsam benannt
eh
- https://github.com/slodge/ehDiesem Beispiel gearbeitet:
MvxViewController
als VC-Basisklasse (stattUIViewController
)ViewModel
in einem Fall -, indem Sie es direkt vor aufrufenbase.ViewDidLoad()
- siehe https://github.com/slodge/eh/blob/master/storyb/RootViewController.cs#L23Request
in einem Fall - während derSegue
navigation - siehe https://github.com/slodge/eh/blob/master/storyb/RootViewController.cs#L40Verwendung von Ansätzen, wie diese es ist ziemlich einfach zu addieren, Mvx-Daten-Bindung an eine Anwendung, die in Erster Linie durch das Storyboard.
Alternativ, wenn die Entwickler lieber lassen Sie die Mvx
ShowViewModel
Navigationssystem Steuern den Fluss von Masken - aber wäre auch lieber diese Bildschirme entwickelt werden und in einem storyboard, dann ist dies möglich durch die Entwicklung einer normalen MvvmCross Anwendung, aber mit einem benutzerdefiniertenPresenter
lädt ViewControllers aus dem storyboard.In v3.1.1 MvvmCross, Sie können dies auf der
ViewsContainer
level:MyContainer
ausMvxTouchViewsContainer.cs
protected virtual IMvxTouchView CreateViewOfType(Type viewType, MvxViewModelRequest request)
- siehe https://github.com/MvvmCross/MvvmCross/blob/b8545752f28f4e569efeaa397c3085b0373e4d8b/Cirrious/Cirrious.MvvmCross.Touch/Views/MvxTouchViewsContainer.cs#L40in diesem überschreiben, laden Sie Ihre Storyboard-basierten ViewControllers:
erstellen Sie Ihre
MyContainer
währendSetup
-sollte nur dann arbeiten...
In einem großen Projekt, so dass alle Ansichten in einem einzigen storyboard kann entmutigend sein.
Bevorzuge ich das erstellen einer storyboard-per-view; modifizierte ich die Container, in Stuart ' s Antwort zu suchen, um ein storyboard passend zu den view-Klasse, und fallen zurück auf die Haupt-storyboard-wenn nicht gefunden:
Caveat 1: instanziieren viewcontrollers auf diese Weise, Sie muss legen Sie die Storyboard ID in den editor:
Caveat 2: Stellen Sie sicher, dass Sie Ihre Ansichten Erben
MvxViewController
den Konstruktorpublic MyView(IntPtr handle) : base(handle)
, da dies wird verwendet, um zu instanziieren der view-Controller aus dem storyboard.Storyboard-Unterstützung ist nun ein Teil von MvvmCross. Verwenden Sie einen ViewController pro Storyboard-Ansatz wie beschrieben in Geir Antwort, die Einstellung der Storyboard-ID, und dekorieren Sie Ihre MvxViewController partielle Klassen mit
[MvxFromStoryboard]
. Siehe Beispiel-code auf meinem blog.Habe ich eine Probe-Projekt (TipCalc) mit mvvmcross und ios storyboard: https://github.com/nicruo/TipCalc.Storyboard