我有课
public ViewController1 (IntPtr handle) : base (handle){}
在
ViewController1.designer.cs
里面我注册了一个 UITextField
[Outlet]
UIKit.UITextField _textField { get; set; }
这是我挣扎的地方:
我有另一个类,
ViewController2
,它继承自 ViewController1
public class ViewController2 : ViewController1
{
public ViewController2 (IntPtr handle) : base (handle){}
}
为什么在
ViewController2
内部调试时我的 _textField
总是 null ? 最佳答案
你初始化 _textField
了吗?像 _textField = new UIKit.UITextField();
。因为在创建类时所有字段都为空。创建 ViewController1
或 ViewController2
后, _textField
为空,除非您在构造函数中为其赋值。
更准确地说,每个字段 T field
都被初始化为 default(T)
,对于引用类型,它是 null
。
顺便说一句:你的“领域”是一个属性(property)。但汽车属性也是如此。
您可以在构造函数中像这样初始化 _textField
:
public partial class ViewController1
{
public ViewController1 (IntPtr handle)
: base(handle)
{
_textField = new UIKit.UITextField();
}
}
我必须承认我不知道 xamarin。你必须在构造函数中调用类似
InitializeComponent();
的东西吗? ViewController1.designer.cs
有这样的方法吗? public ViewController1 (IntPtr handle)
: base(handle)
{
InitializeComponent();
}
例如,在 WinForms 中,设计器分部类有这样一个方法,用于创建控件。