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 将与您的更改同步,您将能够修改该组件。