Xamarin 在 Storyboard 中实例化初始导航控制器
Xamarin Instantiate Initial Navigation Controller in Storyboard
我有一个导航控制器作为我的初始视图控制器。它的根视图控制器是 "StartingViewController"。该视图控制器是由故事板生成的。
自动生成的构造函数为:
public StartingViewController (IntPtr handle) : base (handle)
{
}
但是,当我使用这个构造函数时,当我尝试访问我的任何出口时,我收到错误“object reference not set to an object
”。例如
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
label.Text = "hi";
}
但是这样的东西很好用:
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
Console.WriteLine("hi");
}
我尝试使用不同的构造函数:
public StartingViewController() : base ("StartingViewController", null)
{
}
为此,我没有收到之前的错误,但是 ViewDidLoad()
中没有代码运行,它会打印一条警告,"Ignoring invocation of an instance method on a NULL instance"
。
您需要使用故事板本身来创建视图控制器。请参阅 Introduction to Storyboards 中的 手动实例化故事板 部分。
自动生成的构造函数是正确的。
public StartingViewController (IntPtr handle) : base (handle)
{
}
您在 ViewDidLoad()
中执行 UI 逻辑是正确的,object reference not set to an object
错误告诉您您尝试将文本设置到的标签组件不存在,或者更确切地说,引用不存在。
当您将组件添加到故事板中的 ViewController 时,您需要创建对头文件的引用。
为此,请按住 Control,然后拖动对视图控制器头文件的引用。
当您关闭时 xCode Xamarin 将与您的更改同步,您将能够修改该组件。
我有一个导航控制器作为我的初始视图控制器。它的根视图控制器是 "StartingViewController"。该视图控制器是由故事板生成的。
自动生成的构造函数为:
public StartingViewController (IntPtr handle) : base (handle)
{
}
但是,当我使用这个构造函数时,当我尝试访问我的任何出口时,我收到错误“object reference not set to an object
”。例如
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
label.Text = "hi";
}
但是这样的东西很好用:
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
Console.WriteLine("hi");
}
我尝试使用不同的构造函数:
public StartingViewController() : base ("StartingViewController", null)
{
}
为此,我没有收到之前的错误,但是 ViewDidLoad()
中没有代码运行,它会打印一条警告,"Ignoring invocation of an instance method on a NULL instance"
。
您需要使用故事板本身来创建视图控制器。请参阅 Introduction to Storyboards 中的 手动实例化故事板 部分。
自动生成的构造函数是正确的。
public StartingViewController (IntPtr handle) : base (handle)
{
}
您在 ViewDidLoad()
中执行 UI 逻辑是正确的,object reference not set to an object
错误告诉您您尝试将文本设置到的标签组件不存在,或者更确切地说,引用不存在。
当您将组件添加到故事板中的 ViewController 时,您需要创建对头文件的引用。
为此,请按住 Control,然后拖动对视图控制器头文件的引用。
当您关闭时 xCode Xamarin 将与您的更改同步,您将能够修改该组件。