Как отправить строковые данные в тег UIButton? - PullRequest
0 голосов
/ 09 апреля 2019

Есть ли способ отправки строкового значения в тег UIButton?

let myButton: UIButton = {
    let button = UIButton()
    button.tag = "ABC"
    return button
}()

Мне нужно отправить button.tag в виде строки

Ответы [ 5 ]

4 голосов
/ 09 апреля 2019

Создайте пользовательский класс UIButton и создайте одно свойство типа String, например customTag

class CustomButton: UIButton {
    var customTag:String = ""
}

. Присвойте пользовательский класс своей UIButton и используйте тег типа String, используя следующий код.

let myButton: CustomButton = {
    let button = CustomButton()
    button.customTag = "ABC"
    return button
}()
1 голос
/ 09 апреля 2019

Вместо тега вы можете сделать это, используя accessibilityLabel.

btn.accessibilityLabel = "ABC"
0 голосов
/ 09 апреля 2019

Просто создайте extension из UIButton или NSObject.

extension NSObject {
    private struct AssociatedKeys {
        static var DescriptiveName = "strCustomTag"
    }

    var strCustomTag: String? {
        get {
            return objc_getAssociatedObject(self, &AssociatedKeys.DescriptiveName) as? String
        }

        set {
            if let newValue = newValue {
                objc_setAssociatedObject(
                    self,
                    &AssociatedKeys.DescriptiveName,
                    newValue as NSString?,
                    .OBJC_ASSOCIATION_RETAIN_NONATOMIC
                )
            }
        }
    }
}

См. Ниже код для установки значения strCustomTag

let myButton: UIButton = {
    let button = UIButton()
    button.strCustomTag = "ABC"
    return button
}()

Получить значение

print(view.strCustomTag)

Если вы создаете extension из NSObject

strCustomTag доступен из любого класса или любых элементов пользовательского интерфейса, таких как UIButton, UITextField, UIView и т. Д.

Нет необходимости изменять в storyboard ИЛИ XIB файл

0 голосов
/ 09 апреля 2019

Невозможно установить для тега значение String, поскольку его тип - Int.

Скорее всего, вам все равно не нужно его устанавливать, поскольку использование тега UIView не является обычной техникой.

Если вы все еще хотите использовать подобное решение (я рекомендую этого не делать), тогда вы можете использовать свойство accessibilityIdentifier, которое имеет тип String.

Также вы можете создать собственный подкласс UIButton с пользовательским свойством String ииспользовать этот пользовательский подкласс вместо UIButton

0 голосов
/ 09 апреля 2019

К сожалению, тег является целочисленным значением. Что вы можете сделать, это:

  • Подкласс UIButton и добавьте свою собственность
  • Используйте связанные объекты, как в https://gist.github.com/mjjimenez/7956352
  • Использовать перечисления для тега; возможно добавьте расширение для доступа к ним
  • (Mis) используйте accessibilityIdentifier
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...