【发布时间】:2017-05-12 09:58:02
【问题描述】:
我正在使用 MvvmCross 使用 Xamarin 开发 IOS 应用程序。 我想使用标签栏在我的视图之间导航。我希望每个视图只有 1 个故事板,并且想从代码中导航和调用我的视图。 我已经覆盖了 MvxStoryboardViewsContainer 方法 CreateViewOfTyp(),如下所示:
protected override IMvxTouchView CreateViewOfType(Type viewType,
MvxViewModelRequest request)
{
var storyboardAttribute = viewType.GetCustomAttribute<FromStoryboardAttribute>();
if (storyboardAttribute == null) {
return base.CreateViewOfType(viewType, request);
}
string storyboardName = storyboardAttribute.StoryboardName ?? viewType.Name;
return
(IMvxTouchView)
UIStoryboard.FromName(storyboardName, NSBundle.MainBundle).InstantiateInitialViewController();
}
每次我尝试创建标签栏时,我都会将此方法称为尝试从我的模型创建视图。 我在这里遇到的问题是我实例化的 UIStoryboard 的类型是 UIViewController 而不是 MvxViewController(因此应用程序在尝试投射时崩溃)。 然而,实际的控制器应该是 MvxViewController!
[FromStoryboard("WorklistView")]
public partial class WorklistViewController :
MvxViewController<WorklistViewModel>
{
public WorklistViewController (IntPtr handle) : base (handle)
{
}
}
我不确定我错过了什么?为什么控制器我得到一个 UIViewController 而不是 MvxViewController 它应该是? 事情是我发现了很多关于我正在尝试做的事情,但我无法弄清楚我在做什么不同。
【问题讨论】:
标签: c# ios xamarin mvvm xamarin.ios