我已经在这一天工作了一天以上,我在这里拉出我的头发。我正在尝试将RedLaser示例实现到我自己的应用程序中,但MonoDevelop / MonoTouch只是没有生成正确的代码。它必须是我(不)在Interface Builder中做的事情。好的,这就是。
在'RLSampleViewController.xib.designer.cs的示例中,生成以下内容:
namespace RedLaserSample {
// Base type probably should be MonoTouch.UIKit.UIViewController or subclass
[MonoTouch.Foundation.Register("RLSampleViewController")]
public partial class RLSampleViewController {
private OverlayController __mt_overlayController;
....
[MonoTouch.Foundation.Connect("overlayController")]
private OverlayController overlayController {
get {
this.__mt_overlayController = ((OverlayController)(this.GetNativeField("overlayController")));
return this.__mt_overlayController;
}
set {
this.__mt_overlayController = value;
this.SetNativeField("overlayController", value);
}
}
在我的代码中生成以下内容:
namespace Winkel
{
[Register ("ScanArtikelController")]
partial class ScanArtikelController
{
[Outlet]
Winkel.OverlayController overlayController { get; set; }
所以没有生成'Connect'语法,我也不知道如何在Interface Builder中正确定义它。
我注意到的其他事情。在我的代码中必须有一个不同的生成器激活。这是为RedLaser示例生成的内容:
// ------------------------------------------------------------------------------
// <autogenerated>
// This code was generated by a tool.
// Mono Runtime Version: 4.0.30319.1
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </autogenerated>
// ------------------------------------------------------------------------------
此评论是为我的代码生成的:
// WARNING
//
// This file has been generated automatically by MonoDevelop to store outlets and
// actions made in the Xcode designer. If it is removed, they will be lost.
// Manual changes to this file may not be handled correctly.
//
答案 0 :(得分:1)
在我看来,您拥有的示例代码已过时。这就是以前版本的MonoDevelop(&lt; = 2.6)在Interface Builder是一个独立的应用程序时会生成的。
现在Interface Builder已集成到Xcode中,您的代码就是MonoDevelop(&gt; = 2.8)生成的代码。
关于功能,两个代码段都是相同的,这意味着它们都会创建一个属性,该属性将在界面设计器中以OverlayController
类型反映您的连接插座。