Изведнъж получавам странна и възпроизводима грешка, когато използвам клас @IBDesignable, свойствата @IBInspectable дават следното предупреждение:
Main.storyboard: предупреждение: IB Designables: Игнориране на дефиниран от потребителя атрибут за време на изпълнение за ключов път „test“ на екземпляр на „UIButton“. Ударете изключение, когато се опитвате да зададете неговата стойност: [ setValue:forUndefinedKey:]: този клас не е съвместим с кодиране на ключова стойност за теста на ключа.
За да бъде ясно, това предупреждение е проблем само в Xcode, пакетира се добре. Все още досадно!
Стъпки за възпроизвеждане
- Създайте нов проект
Създайте потребителски @IBDesignable UIButton подклас със свойство @IBInspectable String:
import UIKit @IBDesignable class TempButton: UIButton { @IBInspectable var test:String = "" }
- Drag a Button to a View Controller in the storyboard, and give it the custom class "TempButton" in the Identity Inspector.
- Сега атрибутът „Тест“ трябва да се появи в инспектора на атрибутите за свойствата на „Временен бутон“ - въведете каквото и да е в това поле.
- Бам! Появява се горното предупреждение. Премахнете текста от полето и предупреждението изчезва.
Опитах няколко решения - различни имена на променливи, превръщане на свойството "test" в незадължително, използване на инициализатор, без успех досега.
Ето екранна снимка на проблема: