首页 > 解决方案 > 升级到 Xcode 11.x 后出现 UISegmentedControl 错误

问题描述

安装 Xcode 11 后,在 iOS 12 移动设备上测试时,一直出现以下错误。它总是使应用程序崩溃。

*** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[<UISegmentedControl 0x107c7ec90> setValue:forUndefinedKey:]:此类与键 selectedSegmentTintColor 的键值编码不兼容。”

在 iOS 13 上,它不会崩溃。

标签: iosuisegmentedcontrolios13

解决方案


此错误是由于Selected Tint从 xib 文件设置颜色引起的。当它设置为预定义的颜色(in Colors.xcassets)时,会在运行时导致上述错误并导致应用程序崩溃。

在此处输入图像描述

要处理可行的色调,必须以编程方式完成。

if #available(iOS 13.0, *) {
    unitSegment.selectedSegmentTintColor = UIColor(named: "Primary")!
} else {
    unitSegment.tintColor = UIColor(named: "Primary")!
}

截至目前,崩溃错误出现在 Xcode 11.0 和 Xcode 11.1 上。
Apple 应该在 Xcode 和 Swift 5.1 上默认处理这个问题,或者至少在 xib 文件上选择预定义颜色时提示错误,尤其是当我的目标设置为 12.0 时。


推荐阅读