I have the class
public ViewController1 (IntPtr handle) : base (handle){}
Inside the ViewController1.designer.cs I have registered a UITextField
[Outlet]
UIKit.UITextField _textField { get; set; }
Here's where I am struggling:
I have another class, ViewController2 that inherits from ViewController1
public class ViewController2 : ViewController1
{
public ViewController2 (IntPtr handle) : base (handle){}
}
Why is it that when inside ViewController2 that my _textField is always null when debugging?
Have you initialized _textField? Like _textField = new UIKit.UITextField();. Because all the fields are nulled when a class is created. After creating ViewController1 or ViewController2, _textField is null, unless you assigned it something in the constructor.
More precisely, every field T field is intialized to default(T), which, for reference types, is null.
Btw.: Your "field" is a property. But the same is true for auto-properties.
You could initialize _textField like this in the constructor:
public partial class ViewController1
{
public ViewController1 (IntPtr handle)
: base(handle)
{
_textField = new UIKit.UITextField();
}
}
I must admit that I don't know xamarin. Do you have to call something like InitializeComponent(); inside the constructor? Does ViewController1.designer.cs have a method called like this?
public ViewController1 (IntPtr handle)
: base(handle)
{
InitializeComponent();
}
In WinForms, for instance, the designer partial class has such a method, which creates the controls.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With