【问题标题】:How does MonoTouch autogenerate XIB code behind?MonoTouch 如何在后面自动生成 XIB 代码?
【发布时间】:2011-02-23 22:29:20
【问题描述】:

我是一名 C# 程序员,涉足使用 MonoTouch 进​​行 iPhone 开发。

我在我的项目中添加了一个新的 View Interface Definition,然后双击以在 Interface Builder 中打开它。我添加了一个 UIButton。我保存文件并检查 xib.designer.cs 文件,我看不到对新按钮的引用。

我从http://monotouchexamples.com/ 下载了代码,在那里我可以看到后面的自动生成代码示例:

[MonoTouch.Foundation.Connect("infoButton")]
private MonoTouch.UIKit.UIButton infoButton {
get {
return ((MonoTouch.UIKit.UIButton)(this.GetNativeField("infoButton")));
}
set {
this.SetNativeField("infoButton", value);
}
}

我在界面生成器中打开了 MainWindow.xib。我注意到一些不同之处。 File's Owner 的类型是 UIApplication 而不是 NSObject。这有什么重要性?有一个 AppDelegate 类型的 App Delegate 对象。我无法将 AppDelegate 添加到我自己的视图中,或者至少我无法在库中找到它。我需要添加一个吗?我可以看到 MainWindow.xib 上的现有控件具有到 App Delegate 的引用插座。我添加了一个新按钮,我想把它连接起来。当我单击一个新的引用插座并将其拖动到应用程序委托时,会出现一个列出现有控件的上下文菜单。如何向此列表添加新元素,或者此列表来自何处?

我被 Visual Studio 世界宠坏了,我只是在表单上转储一个按钮,然后开始为 click 事件编写代码。有人可以提供一些关于在 MonoTouch 上运行所需步骤的指示吗?

谢谢,

帕特里克

【问题讨论】:

    标签: xamarin.ios xib


    【解决方案1】:

    单独添加一个按钮是不够的。在 Interface Builder 之外无法访问该按钮。您需要添加一个 Outlet,并将按钮与 Interface Builder 中的 outlet 连接起来。

    记住:Outlets 是你的 Controller 类中获取控件引用的成员,没有它们你不能仅仅访问控件。

    【讨论】:

    • 感谢您的回复。在哪里以及如何添加插座?这是我必须在代码中做的事情吗?您能否强调一下在这个项目中添加网点的位置:github.com/chrisntr/Monotouch-Examples/tree/master/…
    • 插座是在 Interface Builder 中创建的,具体取决于您运行的 Mac OS X 版本。我建议你看看 Monotouch 的教程。
    【解决方案2】:

    正如 Dave 所说,您需要在控制器类中添加一个插座,并将您的按钮连接到该插座,然后才会出现任何自动生成的代码。这让我一开始也很吃惊。

    您在 Interface Builder 库窗口中选择您的控制器类,在库的底部选择“出口”,然后在那里添加一个出口。然后,您需要选择您的按钮,选择检查器窗口的连接选项卡,然后从“新引用插座”圆圈拖动到您的控制器类。 Interface Builder 然后会提示您选择要连接的插座。然后,当您保存时,您应该会在 .xib.designer.cs 文件中显示自动生成的代码,然后您应该能够通过 .xib.cs 文件中的出口变量引用您的按钮。

    【讨论】:

      【解决方案3】:

      听起来我创建的项目已经过时 - 我记得在设计器文件中创建生成的按钮的方式有很多变化。我会尽快为您更新项目。

      正如 Dave 所说,要让代码自动生成,您需要使用 Interface Builder 添加一个插座。在此视频中应该有一个示例 - http://bit.ly/aWoItN 但目前服务器似乎已关闭。

      希望这会有所帮助,

      ChrisNTR

      【讨论】:

        猜你喜欢
        • 2013-08-27
        • 2021-05-13
        • 1970-01-01
        • 2013-06-07
        • 1970-01-01
        • 2012-05-05
        • 1970-01-01
        • 2012-09-17
        • 1970-01-01
        相关资源
        最近更新 更多