根据用户操作,我想动态地将视图(在MvxViewController中)添加到CollectionView的子视图集合中。这就是我正在做的事情:
不起作用:SubviewThree继承MvxViewController
var mvxViewController = new SubviewThree(); // SubviewThree inherits MvxViewController
var uiView = mvxViewController.View;
uiView.ClipsToBounds = true;
uiView.Hidden = false;
uiView.Frame = new RectangleF(0, 0, 320, 200);
CollectionView.AddSubview(uiView);
CollectionView.BringSubviewToFront(uiView);
Works:SubviewThree继承UIViewController
var mvxViewController = new SubviewThree(); // SubviewThree inherits UIViewController
var uiView = mvxViewController.View;
uiView.ClipsToBounds = true;
uiView.Hidden = false;
uiView.Frame = new RectangleF(0, 0, 320, 200);
CollectionView.AddSubview(uiView);
CollectionView.BringSubviewToFront(uiView);
使用:
var label = new UILabel(); // All simple controls work just fine
label.Text = "Test Label";
label.ClipsToBounds = true;
label.Hidden = false;
label.Frame = new RectangleF(0, 0, 320, 200);
CollectionView.AddSubview(label);
CollectionView.BringSubviewToFront(label);
在MvvmCross实现这一目标的最佳方法是什么?请注意,我不能在这里使用数据绑定(并通过视图模型的ObservableCollection添加它),因为要添加的视图取决于用户操作 - 它可能不是同一类型。
这是我正在尝试做的事情:
在右/左按钮触摸时,我想交换视图。视图绑定到不同的视图模型。交换视图可以是V1类型(具有条形和另一个UIView)或其他类型(仅仅是UIView)。
这是我的示例项目的github链接,以防万一上面的图像不清楚。您只需运行该应用程序,然后单击“添加”按钮。将视图添加到子视图的代码在BarCell.cs第158行。我已经评论了上面提到的代码行。
答案 0 :(得分:1)
为了让MvvmCross创建View
并将其与ViewModel
挂钩,MvvmCross使用MvxViewModelRequest
对象。在iOS中,它使用View
属性连接到Request
。
如果您愿意,可以自己挂钩 - 这只是get
/ set
属性,必须在ViewDidLoad
出现之前设置 - 请参阅IMvxTouchView.cs
可替换地:
MvxView
类可能就足够了 - 请参阅N = 32视频了解其使用示例 - http://slodge.blogspot.co.uk/2013/06/n32-truth-about-viewmodels-starring.html