AntonBrock
@AntonBrock
screen light

Почему cancelButton в searchBar не успевает переименоваться?

Проблема:
Пытаюсь переименовать кнопку Cancel для UISearchBar, она переименовывается, но только не с первого взаимодействия. В чем моя ошибка?

Детали:
Пытаюсь реализовать в UISearchBarDelegate, а именно в searchBarShouldBeginEditing
Вот как это выглядит:
let customCancelButton = searchBar.value(forKey: "cancelButton") as? UIButton
    customCancelButton?.setTitle("Отменить", for: .normal)
    searchBar.setShowsCancelButton(true, animated: true)
    searchBar.showsCancelButton = true    
    return true


В итоге, она переименовывается, но не с первого раза, я новичок, поэтому скорее всего просто не вижу явную ошибку!Может с потоками что-то связано?
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 1
AntonBrock
@AntonBrock Автор вопроса
screen light
Все было оказывается на столько просто ...
Для того чтобы поменять название на кнопке и не трогать потоки во ViewDidLoad()
searchBar.setValue("Отменить", forKey: "cancelButtonText")

cancelButtonText - отвечает за это кнопку.
А дальше уже в методе делегата просто показывает саму кнопку, как и было у меня:
searchBar.setShowsCancelButton(true, animated: true)
searchBar.showsCancelButton = true


По поводу проблемы:
Я поставил смену названия, которое было в самом вопросе в другой поток
DispatchQueue.main.async{ // тут менял название}, а уже ниже делал показ кнопки - проблему почти решило, но UI не видел размеры кнопки с первого раза.
Если кто-то сможет объяснить данные момент - будет ответ на вопрос. Т.к. вопрос именно в этом, а не о том, как переименовать кнопку! Буду очень благодарен за объяснение!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы