ess*_*kar 5 ios mvvmcross xamarin
我开始在iOS中使用MvvmCross.
public class MainView : MvxTabBarViewController
{
public override void ViewDidLoad()
{
base.ViewDidLoad();
var vm = (MainViewModel)this.ViewModel;
if (vm == null)
return;
}
}
Run Code Online (Sandbox Code Playgroud)
将断点设置为访问的行ViewModel,显示ViewModel为null.
我可以通过调用ViewDidLoad()构造函数来解决这个问题.然后,ViewModel 在构造函数调用期间为null,但在默认ViewDidLoad调用中有效.但这看起来像是一种解决方法.任何人都可以帮忙吗?
我在这里猜测这里的问题将特定于TabBarViewController构造的方式.
ViewDidLoad 是一个虚方法,它是第一次访问View时调用.
如果TabBarViewController在iOS基本视图构造函数中发生这种情况 - 即它发生在类本身已经调用其构造函数之前.
我找到的唯一方法是添加一个检查情况ViewDidLoad,并ViewDidLoad在类构造函数中进行第二次调用.
您可以在行动中看到这一点N-25 - 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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1289 次 |
| 最近记录: |