Кнопка возврата UINavigationBar всегда становится синей после закрытия строки поиска - PullRequest
1 голос
/ 13 октября 2019

У меня довольно стандартный макет страницы iOS, как показано ниже. Есть панель поиска и есть кнопка «Назад» на панели навигации, чтобы вернуться к родительскому ВК.

У меня есть код, чтобы установить оттенок цвета панели навигации на какой-то другой цвет, например, следующий:

self.navigationController?.navigationBar.tintColor = COLOR

который отлично работает. Однако, если я нажму на строку поиска (которая выведет ее на верхнюю часть и сфокусируется на ней), а затем отклоню ее, кнопка «Назад» станет синей по умолчанию для яблока. Если я захожу в другое приложение, затем возвращаюсь или использую интерактивный распознаватель всплывающих окон, чтобы вернуться к родительскому VC, но отменяю его на полпути (поэтому я возвращаюсь к этому VC), черный цвет восстанавливается. Тем не менее, даже если я вызову вышеуказанный метод в didDismissSearchController(_ searchController: UISearchController), я не смогу установить цвет на что-то кроме синего.

Я думаю, что это скорее всего ошибка Apple. Тем не менее, я хотел бы знать, может ли быть взлом, чтобы заставить его работать. Между прочим, при проверке иерархии представлений навигационная панель фактически имеет правильный цвет оттенка, а кнопка «Назад» - нет. Однако настройка оттенка для кнопки «назад» не имеет никакого эффекта.

enter image description here

1 Ответ

0 голосов
/ 12 ноября 2019

Я столкнулся с подобной проблемой в iOS 13.1

, и способ ее устранения был немного странным. Я добавил пользовательскую кнопку «Назад» на панели навигации. Вот мой код

Вы можете создать новую кнопку возврата в функции UISearchBarDelegate searchBarCancelButtonClicked(_ searchBar: UISearchBar)

func searchBarCancelButtonClicked(_ searchBar: UISearchBar)
{
    //Hide Cancel
    searchBar.setShowsCancelButton(false, animated: true)
    searchBar.text = String()
    searchBar.resignFirstResponder()
     if #available(iOS 13.0, *) {
   createBackButton()
  }
}

func createBackButton() {

    let image = UIImage.init(named: "BackIcon")

    let customBackButton = UIBarButtonItem(image: image, style: .done, target: self, action: #selector(backButtonPressed))
    navigationItem.leftBarButtonItem = customBackButton

    navigationItem.leftBarButtonItem?.setBackButtonTitlePositionAdjustment(.zero, for: .default)
}

@objc func backButtonPressed() {
        navigationController?.popViewController(animated: true)
    }
...