我需要在不使用Interface Builder的情况下创建IBOutlet和IBAction。我该怎么办?
我不确定您打算如何在没有后备箱的情况下连接IBOutlet或IBAction,但是您可以手动创建所需的位。
IBActions只是接口构建器用实现装饰选择器协定的方法。您可以使用以下代码示例手动创建绑定到选择器的方法:
[Export ("someMethod:")]
public void SomeMethod (int arg) {
}
IBOutlets只是装饰实例变量(ivars)的接口构建器。 Monotouch代码生成器将Ivar公开为属性,因此我们可以懒惰地查询本机代理后备存储,而无需在每个过渡点处编组值。您可以使用以下代码示例在代理类上手动创建实例变量:
[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);
}
}
如果在存储在本机字段中的对象上悬挂了任何状态,则也将需要使用此构造,因此垃圾收集器将看到引用。