【问题标题】:MvvmCross iOS: NullReference when using a Custom Presenter for TransitionsMvvmCross iOS:使用自定义演示器进行转换时的 NullReference
【发布时间】:2014-01-29 23:52:13
【问题描述】:

我在 MVVMCross iOS: how to bind a command with Custom transition when switching to different View model 上遵循 Stuart 的建议

当我切换到使用派生自 MvxModalNavSupportTouchViewPresenter 的自定义演示者时,我的应用程序在 AppDelegate::FinishedLaunching 调用 .Start() 时崩溃(System.NullReferenceException:对象引用未设置为对象的实例):

        IMvxAppStart startup = Mvx.Resolve<IMvxAppStart>();
        startup.Start();

调用栈是:

        0x7 in Cirrious.MvvmCross.Touch.Views.Presenters.MvxTouchViewPresenter.get_CurrentTopViewController C#
        0x2 in Cirrious.MvvmCross.Touch.Views.Presenters.MvxTouchViewPresenter.PresentModalViewController   C#
        0x4E in Cirrious.MvvmCross.Touch.Views.Presenters.MvxModalNavSupportTouchViewPresenter.Show C#
        0xB in Cirrious.MvvmCross.Touch.Views.Presenters.MvxTouchViewPresenter.Show C#
        0x28 in Cirrious.MvvmCross.Touch.Views.MvxTouchViewDispatcher.  C#
        0x28 in Cirrious.MvvmCross.Touch.Views.MvxTouchUIThreadDispatcher.RequestMainThreadAction   C#
        0x24 in Cirrious.MvvmCross.Touch.Views.MvxTouchViewDispatcher.ShowViewModel C#
        0x30 in Cirrious.MvvmCross.ViewModels.MvxNavigatingObject.ShowViewModelImpl C#
        0x6 in Cirrious.MvvmCross.ViewModels.MvxNavigatingObject.ShowViewModel  C#
        0xE in Cirrious.MvvmCross.ViewModels.MvxNavigatingObject.ShowViewModel<TestCustomPresenter.Core.ViewModels.FirstViewModel>  C#
        0x17 in Cirrious.MvvmCross.ViewModels.MvxAppStart<TestCustomPresenter.Core.ViewModels.FirstViewModel>.Start C#
    >   0x3A in TestCustomPresenter.iOS.AppDelegate.FinishedLaunching at e:\Src\test\TestCustomPresenter\TestCustomPresenter.iOS\AppDelegate.cs:54  C#
        0x9F in MonoTouch.UIKit.UIApplication.UIApplicationMain C#
        0x52 in MonoTouch.UIKit.UIApplication.Main at /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38   C#
        0x8 in TestCustomPresenter.iOS.Application.Main at e:\Src\test\TestCustomPresenter\TestCustomPresenter.iOS\Main.cs:23   C#

据我所知,目前没有顶视图控制器,但我不知道如何设置它,因为我遵循了 Stuart 回答中的所有步骤。 (我无法回复他的回答,因为我的 9 个代表太少了 :()

我已经上传了一个能重现错误的测试项目到http://www.cliffcawley.net/TestCustomPresenter.zip

我必须做些什么才能使示例正常工作并在您单击按钮时看到自定义转换?

【问题讨论】:

  • 谢谢 - 如果可以的话,请在问题中包含代码或链接到可在线浏览的内容(例如 github) - 这使得在移动时更容易回答您的问题,代码消失的可能性较小并且更有可能这个问题在未来仍然有意义:)

标签: ios xamarin mvvmcross


【解决方案1】:

模态视图控制器显示在其他东西之上。见https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html

我还没有下载你的示例,但从你的堆栈跟踪中我猜你正在将模态显示为你的第一个视图 - 所以上面没有任何东西可以显示。

一个简单的解决方案是先尝试显示另一个视图 - 即使它只是一个占位符或背景。

除了简单的解决方案之外,如果您是 uikit 新手,值得花一些时间来破解一个演示应用程序(非 mvx),您可以在其中尝试将视图控制器作为模态、在导航控制器等中推送和弹出 - 一旦您适应了有了这个,您就可以在任何 mvx 应用程序中快速编写自己的导航/演示逻辑。

【讨论】:

  • 好的,理想情况下我只想自定义视图控制器之间的转换。现在所有的过渡都是从右向左滑动的。我想我必须使用模态视图控制器和 mvvmcross。我是不是为了这么简单的事情走错了路?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多