1

在我的 view.designer.cs 中,我的网点是由 xcode 生成的。

开始调试时,在添加绑定时,我的属性上有一个空引用异常,在下面的代码中 this.SampleText 为空。

public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            this.AddBindings(
                new Dictionary<object, string>()
                {
                    { this.SampleText, "{'Text':{'Path':'VMText'}}"}
                });     
        }

我在应用程序的输出中注意到以下错误:“应用程序窗口应该在应用程序启动结束时有一个根视图控制器”

我错过了什么 ?

4

2 回答 2

0

我知道这有点老了,但我只是遇到了同样的问题。

当我在调用 ViewDidLoad 时尝试访问它们时,我的 View.designer.cs 文件中的插座属性为空。

原来我在 Visual Studio 中的 xib 文件不再设置为 InterfaceDefinition 的构建操作。

希望这可以帮助其他偶然发现此问题的人。

于 2014-05-24T03:21:49.650 回答
0

听起来您的 iOS 设置可能存在更普遍的问题——xcode 和 MonoTouch 之间的 XIB 文件同步可能存在一些问题。

在您尝试添加 MvvmCross 绑定之前,请查看 MonoTouch 层 - 如果 MonoTouch 层中的 this.SampleText 为空,那么您需要先解决该问题,然后才能添加 MvvmCross 绑定代码。

MonoTouch 软调试器是帮助调试的绝佳工具——使用模拟器的调试周期非常快——因此这通常有助于解决这些问题。


从您对这个问题的部分回答来看,听起来您确实试图在基于对话框的 UI 中使用 XIB——这可能行不通——我认为 MonoTouch.Dialog 总是基于一个表——所以它并不期待XIB(至少,这是我的经验!)


至于“应用程序窗口应该在应用程序启动结束时有一个根视图控制器”,这听起来更像是您的 AppDelegate.cs 中的一个普遍问题。或者,它可能是演示者的问题。您使用的是哪个演示者?

该错误消息本身在 StackOverflow 上有很多点击 - 例如,应用程序应该在应用程序启动结束时有一个根视图控制器- 但我不确定其中哪一个适合您的情况。


我必须承认 iOS 和 MVVMCross 对我来说一切都不清楚

对于来自 C# 背景的编码人员,我认为这并不奇怪——我认为从 Windows 上的 VS 到 Mac 上的 MonoDevelop(带有一点 xcode)是一个不平凡的飞跃。从 WP 切换到 iOS 开发比从 WP 切换到 Droid 需要更多时间——这种情况与你是否使用 MvvmCross 无关——如果你在做 MT 开发,你就是在做本机代码,所以你确实需要一些时间稍微了解iOS(根据我的经验/意见!)。

在大多数情况下,我亲自编写了数万行代码,撰写了数百篇博客文章和 stackoverflow 答案,并在 mvvmcross 上进行了十次会议。我已经在五个不同的操作系统上完成了这项工作,其中四个是我在编写代码时学到的,所有这些都是我与平台和工具错误和特性作斗争的。

我将继续尽可能多地发布 - 并继续“免费”运营

我也鼓励每个用户也发布和博客来介绍他们的体验。我希望通过这种方式产生和分享知识。对于正在阅读本文、使用 mvvmcross 并学习有关跨平台编码的任何人(无论好坏),请考虑分享这些知识。为了获得灵感,请查看用户撰写的一些演示文稿和博客文章 - 我尝试在http://slodge.blogspot.co.uk/p/mvvmcross-quicklist.html上列出它们。谢谢 :)


另外,在提问时,请您指出您正在使用哪个版本的 mvvmcross 以及您的代码基于哪个示例 - master 和 vNext 之间存在差异,并且随着时间的推移已经修复 - 所以发布此信息将帮助我尝试理解和/或复制您看到的错误。

谢谢 :)

于 2012-12-08T22:49:29.693 回答