我需要在不使用Interface Builder的情况下创建IBOutlet和IBActions。 我该怎么办?
提前致谢。问候。
答案 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)