UITextField来自不同类的null

jip*_*pot 4 c# xamarin.ios xamarin

我上课了

public ViewController1 (IntPtr handle) : base (handle){}
Run Code Online (Sandbox Code Playgroud)

在里面ViewController1.designer.cs我注册了一个UITextField

[Outlet]
UIKit.UITextField _textField { get; set; }
Run Code Online (Sandbox Code Playgroud)

这是我在苦苦挣扎的地方:

我有另一个ViewController2继承自的类ViewController1

public class ViewController2 : ViewController1
{
    public ViewController2 (IntPtr handle) : base (handle){}
}
Run Code Online (Sandbox Code Playgroud)

为什么在调试时ViewController2我的_textField内容始终为null

Oli*_*bes 6

你初个化了_textField吗?喜欢_textField = new UIKit.UITextField();.因为创建类时所有字段都为空.在创建之后ViewController1或者ViewController2,_textField是空的,除非你指定它在构造函数的东西.

更准确地说,每个字段T field都是初始化的default(T),对于参考类型而言null.

顺便说一句:您的"领域"是一个属性.但对于自动属性也是如此.

你可以_textField在构造函数中初始化如下:

public partial class ViewController1
{
    public ViewController1 (IntPtr handle)
        : base(handle)
    {
        _textField = new UIKit.UITextField();
    }
}
Run Code Online (Sandbox Code Playgroud)

我必须承认我不懂xamarin.你必须InitializeComponent();在构造函数中调用类似的东西吗?是否ViewController1.designer.cs有一个名为像这样的方法?

    public ViewController1 (IntPtr handle)
        : base(handle)
    {
        InitializeComponent();
    }
Run Code Online (Sandbox Code Playgroud)

例如,在WinForms中,设计器的partial类有一个创建控件的方法.