MonoDevelop 2.8 引入了新的 xib 设计器模型以支持 Xcode 4。
Xcode 4 中集成的 Interface Builder 不再支持在 xib 文件中定义类、出口和操作。这意味着 MonoDevelop 不再可能使用从 xib 文件生成 *.xib.designer.cs 文件的模型。相反,Interface Builder 从 Objective-C 源代码中读取出口和操作。 MonoDevelop 的解决方案是将 C# 类同步到 Objective-C 存根。
当您从 MonoDevelop 2.8 打开 xib 文件时,MonoDevelop 将创建一个临时 Xcode 项目,其中包含 Objective-C 存根,镜像所有暴露给 Objective-C 的 C# 类,即从 NSObject 继承并显式注册到[Register("SomeName")]
属性。然后,它在该项目的上下文中打开 xib 文件,以便 Interface Builder 将看到所有可用的类型以及它们的出口和操作。如果使用其控制拖动系统在 Xcode 4 中添加插座和操作,它们会自动导入回 MonoDevelop 中的 *.designer.cs 文件中。
这意味着设计器文件不再是从其他文件生成的,而是存储信息的实际位置。现在,设计器文件与类而不是 xib 关联。
除了支持 Xcode 4 之外,这个新模型还有几个优点:
- 现在多个 xib 文件可以引用同一个类。
- 该项目包含所有内容资源和其他 xib 文件,因此可以轻松地从 Interface Builder 引用它们
- Interface Builder 将“看到”写在 C# 用户类部分和基类上的插座,而不仅仅是设计器类部分。
此外,现在手动编写出口更加容易。只需应用Outlet
属性的属性,例如
[Outlet ("someView")]
UIView SomeView {get; set; }
不幸的是,新模型意味着 MonoDevelop 不再与 Interface Builder 3.2.x 中的插座和操作的创建集成。我的建议是升级到 Xcode 4。加载和编辑 MD 2.8 之前的项目应该可以正常工作。
请参见http://docs.xamarin.com/ios/tutorials/transitioning_from_xcode_3_to_xcode_4 http://docs.xamarin.com/ios/tutorials/transitioning_from_xcode_3_to_xcode_4