Ошибка UISegmentedControl после обновления до Xcode 11.x - PullRequest
1 голос
/ 17 октября 2019

После установки Xcode 11, при тестировании на мобильном устройстве iOS 12, появляется следующая ошибка. Всегда происходит сбой приложения.

*** Завершение работы приложения из-за необработанного исключения «NSUnknownKeyException», причина: '[setValue: forUndefinedKey:]: этот класс не соответствует значению ключа, соответствующему кодированию для ключа selectedSegmentTintColor. '

В iOS 13 он не падает.

1 Ответ

2 голосов
/ 17 октября 2019

Эта ошибка была вызвана установкой Selected Tint цвета из файла XIB. Если для него задан предопределенный цвет (в Colors.xcassets), это вызовет вышеуказанную ошибку во время выполнения и приведет к падению приложения.

enter image description here

Toобрабатывать оттенок цвета, который будет работать, это должно быть сделано программно.

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.

...