3

在 Mono 中,我有一个带有控制器的简单 NSWindow,我删除了一个 NSSplitView 和一个 NSButton。

如果我尝试从构造函数或方法中访问 NSSplitView,Initialize()我会得到一个 nullReferenceException。相反,如果我尝试从 ButtonClicked 方法访问 NSSplitView,它会起作用。

好吧,似乎框架在调用控制器的构造函数后创建了 GUI 组件。但是,如果不在构造函数中,我应该将配置 GUI 组件的代码放在哪里?

提前致谢。约翰内斯

4

2 回答 2

4

您应该AwakeFromNib在控制器类中使用该方法。一旦所有对象都已加载并正确连接,它就会被调用。

public override void AwakeFromNib ()
{
    base.AwakeFromNib ();

    // Do something here with the outlets
}
于 2012-10-24T06:26:13.980 回答
0

你应该使用

public override void ViewDidLoad() {
    base.ViewDidLoad();
}

用于配置您的视图,因为这是刚刚加载视图时调用的方法,而不是在您实例化控制器时调用的方法。如果您在其中配置视图,AwakeFromNib()您将强制实例化您的视图,而您现在可能不需要它们。实际上,当您创建控制器时,视图不会创建,直到有人尝试访问 viewController.View。

于 2013-02-20T00:09:16.640 回答