2011-10-08 53 views
5

编辑:由于我还没有安装XCode 4,我想知道MD 2.8是否与XCode 3.2.6完全兼容或不兼容。特别是,我能否使用MT documentation中描述的新程序连接插座和动作?Monodevelop 2.8,XCode 3.2.6,Interface Builder:插座和操作

我刚刚安装了MonoDevelop(MD)2.8。它似乎不工作,我期待。

MD 2.6当我创建一个新的UIViewController,该控制器呈现类似如下:

  • Controller.xib < - 同一棵树里面
    • Controller.xib.cs
    • Controller.xib.designer.cs

另外,如果我打开一个xib文件Controller.xib,则只会打开Interface Builder(IB)。如果我将插座添加到xib中,则可以在Controller.xib.designer.cs中看到插座。

MD 2.8当我创建一个新的UIViewController,该控制器呈现类似如下:

  • Controller.xib < - 没有更多的同样的树内
  • Controller.cs
    • Controller.designer.cs

所以我有两个文件,而不是一个。

此外,如果我打开一个xib文件,Controller.xib,IB和Xcode打开。如果我将插座添加到xib中,则插座在设计器中不可见。

有什么建议吗?

+2

我没有得到很好的MonoDevelop等还精通,但你有没有注意到有关MonoDevelop的博客条目和MonoTouch中现在使用的Xcode 4? –

回答

6

的MonoDevelop 2.8,以支持的Xcode 4

接口生成器集成在Xcode 4引入了新的厦门国际银行设计模型不再支持定义在厦门国际银行文件中的类,出口和动作。这种情况下,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

+0

非常感谢您的回复。很有帮助。 –

+0

这是否意味着在升级到MD 2.8和Xcode 4的项目中使用MD 2.6和Xcode 3生成的XIB保持旧格式并且一直运行,直到我需要更改某些内容为止? – Krumelur

+0

不需要转换。 –