【问题标题】:Meaning of exclamation mark in iOS Designer on Xamarin StudioXamarin Studio 上 iOS 设计器中感叹号的含义
【发布时间】:2014-09-02 13:52:13
【问题描述】:

我正在使用 iOS 设计器,我有一个故事板,上面有不同的视图(导航控制器,...)。几乎在每个视图的底部右侧都有一个红色感叹号。我收到类似的错误

System.NullReferenceException
对象引用未设置为对象的实例

如果我转到相应的代码行:

public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
{
    return TopViewController.GetSupportedInterfaceOrientations();
}

这是我的CustomNavigationController 的一部分。如果我在 iOS 设计器上设置类名,我会收到错误消息。我必须在这里添加什么?构造函数如下所示:

public CustomNavigationController (IntPtr handle) : base (handle)
{
}

我必须在 AppDelegate 中实例化它吗?

在另一个视图控制器上,我得到了一个类似的异常(使用不同的堆栈),它指向了这一行:

this.NavigationController.NavigationBar.TintColor = UIColor.FromRGB (21, 66, 139);

该应用似乎在模拟器和设备上都能正常运行。

我该如何解决这个问题?

编辑:

我现在删除了视图控制器中的代码:

this.NavigationController.NavigationBar.TintColor = UIColor.FromRGB (21, 66, 139);

作为替换,我将此代码移至 Application Delegate FinishedLaunching()

UINavigationBar.Appearance.TintColor = UIColor.FromRGB (21, 66, 139);

结果是现在我没有这个视图控制器的感叹号,颜色也符合要求。但是 iOS 设计器中的预览不再显示正确的颜色。

如果我在CustomNavigationController 中注释掉GetSupportedInterfaceOrientations(),则其他感叹号已被删除。我想我需要这个函数来定义每个视图控制器的方向。快速浏览一下就知道它似乎有效。

【问题讨论】:

    标签: ios xamarin xamarin-studio


    【解决方案1】:

    设计时可以支持的内容是有限制的。在设计模式下,您应该将任何动态数据(例如从服务加载的数据)替换为虚拟数据。这同样适用于运行时对象,例如 TopViewController,它仅在运行时可用。

    if (Site != null && Site.DesignMode)
    {
        // use dummy data for designer surface
    }
    else
    {
        // use live data
    }
    

    本文档对其进行了更详细的解释:

    http://developer.xamarin.com/guides/ios/user_interface/designer/ios_designable_controls_overview/

    【讨论】:

    • 感谢您提供我不知道的信息。所以我应该在设计模式下添加默认方向?这对访问this.NavigationController 也有效吗?我不知道为什么我无法访问导航控制器。在 iOS 设计器中,此视图上缺少导航栏。
    • 现在我尝试使用这种方法,但我仍然在 iOS 设计器中得到System.NullReferenceException ...这是代码if (Site != null && Site.DesignMode) { return UIInterfaceOrientationMask.Portrait; } else { return TopViewController.GetSupportedInterfaceOrientations (); }
    • 我又用字符串试了一下。我得到UIViewControllerHierarchyInconsistency。这种方法行不通。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 2012-07-07
    • 2012-11-01
    • 2020-01-09
    • 1970-01-01
    相关资源
    最近更新 更多