Поэтому я пытаюсь обновить текст в UIButton, когда нажимаю на него. Я использую следующую строку для изменения текста:
calibrationButton.titleLabel.text = @"Calibration";
Я убедился, что текст меняется, но когда я запускаю приложение и нажимаю кнопку, он меняется на «Калибровка» на долю секунды, а затем возвращается к своему значению по умолчанию. Есть идеи, почему это может происходить? Есть ли какая-то функция обновления, которую мне нужно вызвать?
objective-c
ios
xcode
event-handling
uibutton
Джулиан Колтеа
источник
источник
Ответы:
При компоновке своих подвидов UIButton устанавливает текстовое значение titleLabel, используя свои собственные значения заголовка, так что вы можете установить до четырех разных строк для четырех состояний (нормальный, выделенный, выбранный, отключенный).
Из-за этой функции установка текста titleLabel напрямую не будет сохраняться и будет сброшена кнопкой при размещении своих подвидов.
Это то, что вам нужно сделать, чтобы изменить текст заголовка для состояния кнопки.
источник
button.titleLabel
, вы увидите, что titleLabel является свойством только для чтения, и поэтому любое свойство свойства, доступного только для чтения, также доступно только для чтения. Использование точечной нотации для их редактирования не сработает, поэтому вам нужны явные методы для их редактирования. По крайней мере, для меня это имеет смысл.Although this property is read-only, its own properties are read/write. Use these properties primarily to configure the text of the button. For example:
Чтобы установить текст кнопки, используйте следующий метод:
Подробнее см. В
UIButton
справочнике по классу ... http://developer.apple.com/library/ios/#documentation/uikit/reference/UIButton_Class/UIButton/UIButton.htmlИли в Swift 3:
источник
программно вы можете установить заголовок кнопки, как показано ниже:
вы также можете установить свойство заголовка кнопки из раскадровки.
источник
Ничего особенного и, возможно, очевидно, но для кнопок доступно несколько состояний. Если вы укажете «неправильный» текст, вы не увидите желаемого изменения текста.
Я заметил, что моя кнопка не показывает текст, который я добавил, используя методы, показанные здесь. Проверьте эту ссылку, чтобы убедиться, что вы предоставляете UIControlState, который хотите.
В чем разница между UIControlStateHighlighted и UIControlStateSelected?
источник
Для Swift 3.0
источник
Для Swift 2.0:
источник
Если вы не хотите устанавливать заголовок для всех состояний, просто установите его для нормального состояния, поскольку заголовок для неустановленных состояний по умолчанию будет соответствовать заголовку нормального состояния.
источник