我正在开始在 iOS 中使用 MvvmCross。
public class MainView : MvxTabBarViewController
{
public override void ViewDidLoad()
{
base.ViewDidLoad();
var vm = (MainViewModel)this.ViewModel;
if (vm == null)
return;
}
}
在访问的行设置断点ViewModel
,告诉我,那ViewModel
一片空白。
我可以通过致电解决此问题ViewDidLoad()
在构造函数中。然后,ViewModel
在构造函数调用期间为 null,但在默认情况下有效ViewDidLoad
称呼。但这看起来像是一个解决方法。有人可以帮忙吗?
我猜这里的问题将特定于TabBarViewController
被建造。
ViewDidLoad
是一个虚拟方法,第一次访问视图时会调用它。
如果是TabBarViewController
这发生在 iOS 基本 View 构造函数期间 - 即它发生before类本身已调用其构造函数。
我发现的解决这个问题的唯一方法是添加一个针对情况的检查ViewDidLoad
,并拨打第二次电话ViewDidLoad
在类构造函数期间。
你可以在 N-25 的行动中看到这一点 -https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/blob/976ede3aafd3a7c6e06717ee48a9a45f08eedcd0/N-25-Tabbed/Tabbed.Touch/Views/FirstView.cs#L17 https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/blob/976ede3aafd3a7c6e06717ee48a9a45f08eedcd0/N-25-Tabbed/Tabbed.Touch/Views/FirstView.cs#L17
就像是:
public class MainView : MvxTabBarViewController
{
private bool _constructed;
public MainView()
{
_constructed = true;
// need this additional call to ViewDidLoad because UIkit creates the view before the C# hierarchy has been constructed
ViewDidLoad();
}
public override void ViewDidLoad()
{
if (!_constructed)
return;
base.ViewDidLoad();
var vm = (MainViewModel)this.ViewModel;
if (vm == null)
return;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)