C# 如何在monotouch中将自定义视图添加到XIB文件定义视图

C# 如何在monotouch中将自定义视图添加到XIB文件定义视图,c#,ios,mono,xamarin.ios,monodevelop,C#,Ios,Mono,Xamarin.ios,Monodevelop,我现在正在努力学习monotouch,并遵循Mike BlueStein的《学习monotouch》一书。这本书不错,但自从Xcode4(我相信)和monotouch的更新版本问世以来,它已经有点过时了 无论如何,在我的项目中,我有一个控制器和一个xib文件。我还有一个自定义视图(例如myview:UIView),它覆盖了draw方法。我想在xib文件中定义的视图旁边或顶部显示我的自定义视图。我该怎么做 在控制器中,如果我重写LoadView方法,并将视图设置为自定义视图的实例,那么我可以看到它

我现在正在努力学习monotouch,并遵循Mike BlueStein的《学习monotouch》一书。这本书不错,但自从Xcode4(我相信)和monotouch的更新版本问世以来,它已经有点过时了

无论如何,在我的项目中,我有一个控制器和一个xib文件。我还有一个自定义视图(例如myview:UIView),它覆盖了draw方法。我想在xib文件中定义的视图旁边或顶部显示我的自定义视图。我该怎么做

在控制器中,如果我重写LoadView方法,并将视图设置为自定义视图的实例,那么我可以看到它,但我丢失了在xib文件中定义的所有内容。如果我尝试添加为子视图,它根本不会出现

我错过了什么?如果问题不清楚,请问我,这样我可以澄清


干杯。

按照以下步骤在XIB中使用自定义视图:

首先,用
注册表属性
装饰视图:

[Register("MyView")]
public class MyView : UIView
{
}
并实现以下构造函数:

public MyView(IntPtr handle) : base(handle) {}
当运行时试图在视图被内存警告破坏后重新创建视图时,需要使用此构造函数。创建自定义类后:

  • 在Xcode中打开XIB(总是通过MonoDevelop双击它),并在需要的地方添加一个
    UIView
  • 在Xcode中,将UIView的类设置为MyView(或传递给
    注册表属性的名称):

  • 编译运行
编辑:


不要覆盖从XIB加载的控制器的
LoadView
<代码>加载视图
用于在控制器视图未从XIB加载时创建控制器视图。

谢谢Dimitris,回答得很好

对于像我一样感到困惑的人,下面是添加和使用Xib文件作为部分/子视图的最简单的过程:

  • 在MonoDevelop中添加新的Xib文件(即
    LoginView.Xib
  • 添加一个新的(部分)类,这将是视图的自定义类(比如代码隐藏文件)。给它起任何名字“
    LoginView.cs
    ”)
  • 添加属性(
    RegisterAttribte
    )和
    Constructor
    ,如上所示 迪米特里斯。
  • 双击
    LoginView.xib
    以在XCode IB中打开它。然后更改xib文件的
    Custom Class
    属性以指向您的“代码隐藏文件”(即
    LoginView.cs
  • 如果需要,添加任何出口或操作。MonoDevelop将生成一个.designer文件并将其附加到您的代码隐藏文件中,在这里您可以看到所有的出口和操作
  • 在要添加此视图的控制器中,按如下方式加载.xib文件:

    var views=NSBundle.MainBundle.LoadNib(“LoginView”,this,null); LoginView LoginView=Runtime.GetNSObject(views.ValueAt(0))作为LoginView; mainLayout.AddSubview(loginView); //其中mainLoyout是我的主ViewController中的占位符

  • 这三行是基于flexaddicted回答的

    这可能会有所帮助