На iOS, как сделать динамический список «ссылок» или кнопок вызывать метод со строковым аргументом?

Похоже, что обычный способ заставить текст вести себя как ссылка на iOS – это сделать UIButton, но я заметил, что addTarget addTarget или URI- addTarget не имеют аргумента, который может быть передан методу, когда кнопка нажата?

Ситуация заключается в том, что с сервера мы можем вернуть список слов, таких как «ананас», «яблоко», «оранжевый», и цифры могут меняться. Эти слова отображаются на экране, и нажатие на слово вызовет ViewController для замены главного контроллера представления.

Кажется, что одним из способов является использование тега UIButton, поэтому, когда мы настраиваем кнопку, мы даем ей тег 0, а в другом массиве текущего контроллера представления или представления делаем элемент 0 точкой для объекта NSString, содержащего слово «ананас». И так в обработчике, тег можно получить, и его можно использовать для извлечения строки. Но это единственный способ, потому что он кажется не очень структурным. Есть ли способ лучше?

Мой коленный рефлекс ответил просто на то, чтобы вы подклассифицировали UIButton . Всякий раз, когда вы хотите добавить свойство в существующий класс, «подкласс» – это первый ответ, который приходит на ум. Но когда я попытался подклассифицировать UIButton , это не сработало. Поиск для «подкласса UIButton» Я обнаружил, что это хорошо известная проблема с несколькими рекомендованными решениями:

  • Подкласс UIButton для добавления свойства
  • Объект C: Кнопки, созданные из подкласса класса UIButton, не работают
  • создать подкласс uibutton

Я попытался создать категорию с ассоциативными ссылками, а также упростить подход к UIView подклассу UIView и сделать желаемую кнопку подвидным. Оба подхода работают нормально. Но интуитивно привлекательный вариант просто подкласса UIButton работает не очень хорошо.

Но в то время как различные рабочие задачи для добавления свойств к объектам UIButton работают, они кажутся достаточно неинтуитивными, что я бы склонен вернуться к чему-то простому, например, использовать номера tag в массиве или словаре, а не преследовать эти громоздкие методы подклассификации кнопок.

Создайте изменяемый словарь. Чтобы связать слово с помощью кнопки, добавьте адрес кнопок, завернутый в nsnumber, как ключ, и слово в качестве объекта. Когда кнопка нажата и отправляет сообщение о действии вместе с «sender», вы можете получить текущее слово из словаря.

  • Навигационная панель с большим заголовком iOS 11 не рушится
  • Метод sizeForItemAt не вызывается при использовании настраиваемого макета
  • Настройка фонового изображения / блокировки экрана iOS программно?
  • UIKeyboardTypeDecimalPad десятичная кнопка, ограниченная половинной шириной
  • Не удается скрыть клавиатуру в стеке UIViewController, когда UIAlertView находится на экране
  • Как мне настроить tintColor на серый на настраиваемом элементе управления, когда лист / предупреждение отображается в iOS 7?
  • UITableView reloadRowsAtIndexPaths: кажется, что он разбивает insertRowsAtIndexPaths:
  • Затухание элементов в UICollectionView
  • Как упорядочить перемещения, вставки, удаление и обновления в блоке выполнения UICollectionView executeBatchUpdates?
  • Рисование рисунка в iOS
  • iPhone X скрыть домашний индикатор на контроллере просмотра
  • Давайте будем гением компьютера.