Все было оказывается на столько просто ...
Для того чтобы поменять название на кнопке и не трогать потоки во
ViewDidLoad()
searchBar.setValue("Отменить", forKey: "cancelButtonText")
cancelButtonText
- отвечает за это кнопку.
А дальше уже в методе делегата просто показывает саму кнопку, как и было у меня:
searchBar.setShowsCancelButton(true, animated: true)
searchBar.showsCancelButton = true
По поводу проблемы:
Я поставил смену названия, которое было в самом вопросе в другой поток
DispatchQueue.main.async
{ // тут менял название}, а уже ниже делал показ кнопки - проблему почти решило, но UI не видел размеры кнопки с первого раза.
Если кто-то сможет
объяснить данные момент -
будет ответ на вопрос. Т.к. вопрос именно в этом, а не о том, как переименовать кнопку! Буду очень благодарен за объяснение!