MvvmCross iOS演示者IMvxTouchView.ViewModel为null

时间:2014-04-04 19:02:17

标签: mvvmcross

我正在开展涉及MvvmCross的一些项目。对于iOS,我使用继承自MvxTouchViewPresenter的自定义演示者。

    public override void Show(IMvxTouchView view)
    {

     var viewController = view as UIViewController;

     if (viewController == null)
             throw new MvxException("Passed in IMvxTouchView is not a           UIViewController");
     if (_masterNavigationController == null)
             ShowFirstView(viewController);
     else
             _masterNavigationController.PushViewController(viewController, true /*animated*/);

     var myviewmodel = view.ViewModel;
     //Do some staff for myviewmodel

     }

我的问题是,在大多数情况下,myviewmodel此时为空。它被创建但稍后在...加载viewController时。这看起来像是一个计时问题...有趣的是,这段代码在我以前的MvvmCross项目中运行得很好。

我也尝试过使用:

     var myviewmodel = view.ReflectionGetViewModel ();

不幸的是结果是一样的:( 任何人都知道如何解决或解决这个问题?

1 个答案:

答案 0 :(得分:1)

MvvmCross在base.ViewDidLoad()中创建ViewModel作为ViewController的一部分 - 所以如果ViewDidLoad未被调用,那么它还不会成为ViewModel

基于此: