2012-02-09 32 views
1

我使用MonoTouch创建了单视图ipad应用程序。我想为应用程序创建更多的屏幕/视图。所以我为当前的解决方案添加了一个新的ipad视图。当我这样做时,xib只能添加到解决方案中(没有对应的.cs文件,视图控制器)。我在IB中设计了xib,但是我不知道如何将它添加到已经存在的视图控制器中。如何在MonoTouch中使用不同的视图/屏幕/ xibs?

我希望我已经说清楚了,那么请你告诉我如何继续。

回答

1

答案很简单:

一般来说,你会希望有每个厦门国际银行视图控制器。如果您使用“iPad视图控制器”模板,它将创建一个控制器类和一个xib文件供其加载。但是,您可以非常轻松地手动添加控制器类 - 或者仅复制现有的控制器类。

基控制器类做的工作装和管理厦门国际银行 - 你告诉它通过传递厦门国际银行名称添加到基础构造的使用方法:

public partial class MyViewController : UIViewController 
{ 
    public MyViewController() : base ("MyXibName", null) 
    ... 

高级答案

“nib”是包含序列化UI对象的文件。 “xib”只是一个笔尖的XML表示。在构建应用程序包时,您的xib将被编译为nibs。以直接从应用程序包中加载一个笔尖的API是:

NSBundle.MainBundle.LoadNib (xibName, owner); 

的XIB的名称是其束资源ID - 文件名但没有扩展。

这将加载笔尖,反序列化其中的所有对象,并将其所有插口连接到owner对象。这就是您在Interface Builder中看到的“文件所有者”对象。您可以在IB中设置其类型,然后将对象连接到其出口和操作。从技术上讲,在运行时使用的所有者对象的类型实际上并不重要,只要它具有与xib中的对象相连的相同的命名插座和操作,并且这些类型是兼容的。

在运行时您可以灵活掌握nib和所有者对象。例如:

  • 视图控制器可以通过向基础构造函数传递不同的nib名称来根据设备类型加载不同的nib。这对通用应用程序(iPhone + iPad)很有用。
  • 一个笔尖可以包含许多UIView并将它们连接到其所有者上的多个出口,或者如果您不想拥有很多控制器,则单个控制器可以显式加载并拥有多个笔尖。
  • 不同的控制器可以加载相同的笔尖,但将不同的数据加载到其小部件中。
  • 您可以拥有一个带有插座的基础控制器类,并且许多属于不同子类的控制器类的nib可以连接到这些插座。
+0

我还是输了。如果可能的话,您可以向我提供在按下按钮时将不同笔尖加载到视图控制器中的代码。 – 2012-02-10 20:01:24

+0

你可能想要一个NavigationViewController并将新的ViewController推到它上面。有关示例,请参阅Master-Detail模板。 – 2012-02-12 04:01:58

+0

如何从一个基本的视图控制器,它有两个按钮,打开两个新的视图? – 2012-02-16 18:03:06

相关问题