【问题标题】:NullReferenceException when accessing GUI Components in Controllers constructor在控制器构造函数中访问 GUI 组件时出现 NullReferenceException
【发布时间】:2012-10-23 20:10:40
【问题描述】:

在 Mono 中,我有一个带有 Controller 的简单 NSWindow,我放置了一个 NSSplitView 和一个 NSButton。

如果我尝试从 Contstructor 或 Initialize() 方法访问 NSSplitView,我会得到一个 nullReferenceException。相反,如果我尝试从 ButtonClicked 方法访问 NSSplitView,它可以工作。

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

提前致谢。 约翰内斯

【问题讨论】:

    标签: mono xamarin.ios monomac


    【解决方案1】:

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

    public override void AwakeFromNib ()
    {
        base.AwakeFromNib ();
    
        // Do something here with the outlets
    }
    

    【讨论】:

      【解决方案2】:

      你应该使用

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

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

      【讨论】:

        猜你喜欢
        • 2015-09-03
        • 1970-01-01
        • 2014-11-17
        • 2010-11-03
        • 2014-03-12
        • 1970-01-01
        • 2015-06-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多