我试图了解故事板在iOS开发中的运作方式以及MVVMCross如何适应。我认为最好的解决方案是构建iOS版MVVMCRoss TipCalc教程
我正在使用Storyboard,因为您无法在Visual Studio中编辑XIB。我目前的想法是每个屏幕一个故事板。
我有它的工作,但感觉就像我做的那样运气比判断更多。因此,我想检查一下我的理解。
在TipCalc.UI.Touch中我有
我已按照此SO answer.的建议添加了自定义Mvx View容器。在该容器的CreateViewOfType方法中,我调用Storyboard.InstantiateViewController并将其转换为IMvxTouchView。
控制器如何成为View?
我打算每个故事板都有一个“视图”。
如果故事板中有多个视图,您是否每个视图都有一个控制器?
当我在故事板设计器中调出“视图”的“属性”窗口时,它在“标识”部分中有一个名称和一个类。 Class属性的目的是什么?是否会创建代码隐藏文件?
我在Controller的ViewDidLoad方法中创建View-to-ViewModel绑定
public override void ViewDidLoad()
{
base.ViewDidLoad();
this.CreateBinding(this.tipValueText).To<TipViewModel>(vm => vm.Tip).Apply();
this.CreateBinding(this.subTotalTextBox).To<TipViewModel>(vm => vm.SubTotal).Apply();
this.CreateBinding(this.generositySlider).To<TipViewModel>(vm => vm.Generosity).Apply();
}
这些绑定有效但我只是想检查其他人是否也这样做。
答案 0 :(得分:1)
iOS ViewController实际上是MVVMCross应用程序中的View。您可以将视图控制器视为视图背后的代码(因此就像Windows Phone / Windows Store应用程序将具有XAML和相关的.cs文件,或者Android应用程序将具有axml和java视图类)< / p>
是的,当在一个故事板中使用多个视图时,每个视图实际上都是一个视图控制器(因为这就是故事板中的屏幕)
class属性定义了storyboard中布局使用的viewcontroller类(以便使用类后面的代码,如果它不存在则会创建)
我更喜欢单个故事板,因为我的大多数应用都没有太多屏幕,所以这些是我在现有故事板中创建视图时遵循的步骤
如果您在每个视图中使用故事板,则使用正确的名称(例如HomeView)创建该故事板应该为您创建ViewController和设计器文件,并为您提供一个故事板,其中一个viewcontroller已准备就绪
编辑: 在你的绑定中,你可以使用一个set.Apply();最后