【问题标题】:Style elements defined in Interface Builder are not being applied when instantiating from Storyboard从 Storyboard 实例化时,未应用 Interface Builder 中定义的样式元素
【发布时间】:2014-01-15 00:04:53
【问题描述】:

我有一个在 Xamarin.iOS(C#,Monotouch)中开发的 iOS 应用程序,其中主要 UI 不是基于情节提要的。 (我这样做是因为我的应用在纵向和横向方向上需要结构上不同的布局,而以编程方式实现这一点比通过 IB 和 Storyboard 容易得多。)

我的问题是我现在正在尝试使用 Storyboard 来开发一个简单的对话框,但是当我实例化对话框时,结构就在那里,但没有应用 Interface Builder 中定义的样式元素。我读过的一切似乎都表明这应该发生。这尤其成问题,因为大多数样式元素在界面初始化后都无法修改。

这是我进行实例化的代码:

UIStoryboard sb = UIStoryboard.FromName("StoryboardAppSettings", null);
var vc = sb.InstantiateViewController("TableViewControllerAppSettings");
UIViewController settingsVC = vc as UIViewController;
PresentViewController(settingsVC, true, null);

我已经定义了一个要“分组”的 UITableView,但事实并非如此。我有两个 UISwitch 元素,其中定义了未应用的颜色。我的按钮未应用其色调。

(如果我设置断点并深入查看视图控制器数据结构,我会发现所有这些参数都设置正确......当实现层次结构时它们似乎被忽略了。)

我做错了什么?

【问题讨论】:

    标签: ios xamarin.ios storyboard xamarin uistoryboard


    【解决方案1】:

    我发现问题在于我正在设置 UIView.Appearance.BackgroundColor。似乎当您这样做时,UIView.Appearance.BackgroundColor 总是会覆盖 UISwitch.OnTintColor。 (在我看来,这是一个错误,可能在 iOS 中,但我可能误解了 Appearance API 应该如何工作。我的期望是可以在更具体的级别(后代视图)覆盖通用的全局设置(如 UIView.Appearance)或特定实例化),我相信这是它对大多数其他外观属性的工作方式。UISwitch.OnTintColor(以及 UISwitch.TintColor 和 UISwitch.BackgroundColor,但不是 UISwitch.ThumbTintColor)似乎是例外(因此是错误),而不是规则。

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 2012-04-18
      • 2011-08-11
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 2022-01-13
      • 1970-01-01
      相关资源
      最近更新 更多