Monotouch:以编程方式创建IBOutlet和操作

问题描述 投票:3回答:2

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

xamarin.ios
2个回答
2
投票

我不确定您打算如何在没有后备箱的情况下连接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);
    }
}

如果在存储在本机字段中的对象上悬挂了任何状态,则也将需要使用此构造,因此垃圾收集器将看到引用。


1
投票

所以我想您想减少XIB,您有2个选择

Adding everything by hand

or use Miguel's MonoTouch.Dialog

[这2篇文章将以两种方式设置您。

Alex

© www.soinside.com 2019 - 2024. All rights reserved.