我正在尝试使mvvmcross可以用于某些iOS开发,并且如果我编写了将所有必要控件添加到代码中的视图,则可以使其正常运行。这行得通,但是以这种方式发展却是巨大的痛苦。我想使用xcode中的xib文件来定义接口,但是我似乎无法弄清楚如何使其工作。我有一个这样的视图类:

[Register("FirstView")]
public partial class FirstView : MvxViewController
{
    public FirstView () : base("FirstView",null)
    {
    }

    public FirstView(IntPtr handle) : base(handle)
    {
    }


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


我添加了一个名为“ FirstView.xib”的iphone视图,并在xcode中将其打开,我遇到的第一个问题是它创建了一个视图,而不是视图控制器,因此可以将类设置为FirstView。所以我删除视图,添加一个UIViewController,它使我可以将类设置为FirstView。然后,将视图拖到视图控制器上,并添加文本框,标签和按钮。我退出了xcode,Xamarin完成了它的工作,并创建了我的局部类的另一半。但是,当我尝试在iPhone模拟器中运行代码时,它不起作用。它启动后立即退出,而没有显示我的视图。

我在Xamarin Studio的应用程序输出窗口中看到了很多东西,也许这相关吗?


  2013-06-06 10:47:13.666 MyAppIPhoneUI [26190:c07]预计应用程序窗口在应用程序启动结束时将具有一个根视图控制器
  2013-06-06 10:47:13.668 MyAppIPhoneUI [26190:c07] TouchNavigation:诊断:0.10要求浏览
  2013-06-06 10:47:13.691 MyAppIPhoneUI [26190:c07] mvx:诊断:0.13请求为空-假设这是在构建期间调用ViewDidLoad的TabBar类型的情况...正在为请求打补丁-但请注意施工期间虚拟通话的问题
  2013-06-06 10:47:13.697 MyAppIPhoneUI [26190:c07] mvx:警告:屏蔽了0.13异常NullReferenceException:对象引用未设置为对象的实例
        在Cirrious.MvvmCross.ViewModels.MvxViewModelLoader.LoadViewModel(Cirrious.MvvmCross.ViewModels.MvxViewModelRequest请求,IMvxBundle savedState)处[0x00000]


知道可能是什么问题吗?实际上可以在xib中定义我的视图并仍然使用mvvmcross吗?我看过slodge的YouTube,他在其中使用xib定义了UITableCellView,但没有定义整个视图。

最佳答案

从跟踪来看,“不开始”问题与以下方面有关:


  未将对象引用设置为Cirrious.MvvmCross.ViewModels.MvxViewModelLoader.LoadViewModel上的对象实例


我不确定是什么原因引起的-从跟踪和描述中很难得知-如果将示例项目放在某个地方,则来自mvx的人可以查看一下。



另外,还有更多有关XIB的最新视频

这些包含在此N + 1索引中-http://mvvmcross.wordpress.com

特别是,请参阅:


中的FirstView / XIB工作于22:40开始
http://www.youtube.com/watch?feature=player_detailpage&v=UC2r4mmj3UI#t=22m40中的几种视图(尽管不确定为什么我说我当时不能在Mac上构建-可能是由于设置/激活问题:/)

关于iphone - 使用Mvvmcross和Xibs,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16965532/

10-15 15:20