Итак, я реализую настраиваемую панель инструментов "chooser", такую как iOS-эквивалент набора радиокнопок (UISegmentedControl
). Просто горизонтальная панель, разделенная на опции.
Для этого я создал подкласс UIControl
под названием SegmentedControl
и реализовал пользовательский чертеж. Однако, с таким представлением, мне нужно установить, какие доступны доступные параметры. Я мог бы просто получить доступ к представлению с контроллера viewDidLoad()
и установить их там, но мне нравится использовать конструктор интерфейса для такого рода материалов.
Итак, я обнаружил эту замечательную вещь под названием "Пользовательские атрибуты времени выполнения". Я создал атрибут String
с ключом buttonValues
и установил значение (это простой Мужской/Женский выбор, поэтому я пошел с "Male | Female" ). Я узнал, что вы можете получить доступ к этим значениям с помощью функции self.valueForKey()
и передать ключ. Я сделал парсер, чтобы превратить эту строку в массив, а затем добавил функциональность для функции drawRect()
, чтобы использовать массив для настройки кнопок.
Когда я запустил приложение, я получил сообщение об ошибке "Кодирование соответствия ключевых значений".
Итак, я посмотрел на это, и я узнал, что класс должен иметь резервные переменные для хранения атрибутов. Так хорошо, я добавил переменную экземпляра под названием buttonValues
и инициализировал ее до ""
. Теперь приложение работает нормально, но значение выходит из функции self.valueForKey()
. Я просмотрел учебники о том, как настроить пользовательские атрибуты времени выполнения, но они недостаточно подробно описаны. Они говорят о соблюдении ключевых правил кодирования, как о том, что я должен просто знать.
Я хотел бы точно знать, что я должен сделать, чтобы это правильно работало, подробно.