【问题标题】:Changing of UISwitch text in iOS 4.2在 iOS 4.2 中更改 UISwitch 文本
【发布时间】:2011-06-15 22:59:57
【问题描述】:

我正在尝试更改 UISwitch 中的文本。网站上的示例 (Changing the text on a UISwitch) 工作正常,但是当我将我的 xcode 升级到 3.2.5 和 iOS 4.2 时,当调用函数来更改文本时应用程序崩溃。我正在使用网站上的以下示例。

例如。

((UILabel *)[[[[[[_agreeAgb subviews] lastObject] subviews] objectAtIndex:2] subviews] objectAtIndex:0]).text = @"Foo";
((UILabel *)[[[[[[_agreeAgb subviews] lastObject] subviews] objectAtIndex:2] subviews] objectAtIndex:1]).text = @"Bar";

抛出异常是因为遇到了空对象。

谢谢。

【问题讨论】:

  • 我也遇到了同样的问题你能告诉我你是怎么解决的

标签: xcode ios uiswitch


【解决方案1】:

不要这样做。绝对不支持操纵框架控件的私有视图层次结构,并且可能导致与操作系统更新不兼容。尤其是当您的代码完全没有对层次结构进行验证时,因此如果子视图的数量或类型与您的预期不符,您很容易崩溃。

【讨论】:

  • @Hisoka:我想你错过了我回答的重点,那就是没有没有好的解决方案。
【解决方案2】:

我在 4.2 中找到了 this code from here 的成功。它是 UISlider(不是 UISwitch)的子类,以实现看起来与自定义 UISwitch 相同的效果。

【讨论】:

  • 这里是+1,上面的答案是-1。的确,您不能像以前那样做,但是您问题的真正答案是如何实现具有不同标签的 UISwitch 等效项。另一个选项在这里osiris.laya.com/projects/rcswitch
  • 请注意使用此解决方案的人:它要求您提供自己的开关图像。当 iOS 切换到新样式的开关(iOS 5?)时,任何使用它的应用程序都会有看起来的开关。因此,当新的 iOS 版本出现时,您应该确保目视检查此解决方案的一致性。
【解决方案3】:

似乎还没有支持更改 TEXT 的方法,但您可以通过设置 iOS 6 中引入的 onImageoffImage 属性来更改显示的内容

http://developer.apple.com/library/ios/documentation/uikit/reference/UISwitch_Class/Reference/Reference.html

【讨论】:

    【解决方案4】:

    尝试使用可自定义的开源 UISwitch 替代品。

    这个看起来不错:DCRoundSwitch on GitHub,但如果那个不起作用,GitHub 上还有更多。

    这种方法没有相同的不兼容问题,因为它实现了开关的功能和绘图本身,并且只依赖于核心功能 UIControl 基类。您可能需要不时更新的唯一内容是您正在使用的库 (DCRoundSwitch),但是,UIControl 和 Quartz 绘图等基本功能已经非常成熟并且很少更改,因此可以安全地将其视为罕见且最小的风险因素.

    【讨论】:

      【解决方案5】:

      最新版本的 XCode Beta 4 刚刚添加了对 UISwitch 上更改文本的支持。还有一个 SwtichStyle,我还没有调查过那里有哪些样式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-30
        • 2011-02-12
        • 2011-11-16
        • 1970-01-01
        • 2015-10-13
        • 2011-08-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多