Monotouch:以编程方式创建IBOutlet和Actions

时间:2011-02-25 13:47:06

标签: xamarin.ios

我需要在不使用Interface Builder的情况下创建IBOutlet和IBActions。 我该怎么办?

提前致谢。问候。

2 个答案:

答案 0 :(得分:2)

我不确定您是否计划在没有支持笔尖的情况下连接IBOutlet或IBAction,但您可以手动创建所需的位。

IBActions只是界面构建器与实现装饰选择器契约的方式。您可以使用以下代码示例手动创建绑定到选择器的方法:

[Export ("someMethod:")]
public void SomeMethod (int arg) {
}

IBOutlets只是界面构建器装饰实例变量(ivars)的方式。 Ivars由monotouch代码生成器公开为属性,因此我们可以懒惰地查询本机代理后备存储,并且不需要在每个转换点编组该值。您可以使用以下代码示例在代理类上手动创建实例变量:

[Connect("varname")]
private NSObject varname {
    get {
        return ((NSObject) (this.GetNativeField("varname")));
    }
    set {
        this.SetNativeField("varname", value);
    }
}

精明的读者会注意到MT代码生成器生成的代码略有不同:

private NSObject __mt_varname;
[Connect("varname")]
private NSObject varname {
    get {
        this.__mt_varname = ((NSObject) (this.GetNativeField("varname")));
            return this.__mt_varname;
    }
    set {
            this.__mt_varname = value;
        this.SetNativeField("varname", value);
    }
}

如果您将存储在本机字段中的对象的任何状态悬挂下来,则还需要使用此构造,以便垃圾收集器查看引用。

答案 1 :(得分:1)

所以我想你想减去XIB,你有两个选择

Adding everything by hand

or use Miguel's MonoTouch.Dialog

这两篇文章将为您提供任何一种方式。

亚历