Заголовок NavigationBar перекрывается с новым открытым VC после активации и отмены строки поиска в 1-м VC - PullRequest
2 голосов
/ 21 октября 2019

У меня есть панель навигации, которая включает в себя панель поиска для фильтрации данных таблицы в текущем VC, назовем ее 1st VC.

А по шагам активна эта строка поиска и отмени ее. Затем щелкните по любой строке tableView 1st VC, чтобы открыть 2nd VC. Странное поведение наступает , навигационный заголовок 2-го ВК перекрывается с навигационным заголовком 1-го ВК. Кроме того, кнопка в правом верхнем углу больше не активируется после возникновения этой проблемы. Я получаю это при обновлении до iOS 13 с предыдущей версии 12.

/ / / сначала прикрепляем скриншот проблемы, вы можете видеть, что заголовок «Музыка» в 1-м ВК перекрывается с заголовком «Игра» во 2-м ВК.

enter image description here

/ / / навигационный штрих-код в 1-м ВК

override func viewDidLoad() {
        super.viewDidLoad()

        // set tableView's separatorColor
        self.tableView.separatorColor = UIColor(rgb: 0x5E5E5E)

        // get songs from app's local dir
        self.retrieveSongsfromLocalDir()

        // add search bar
        resultSearchController = ({
            let controller = UISearchController(searchResultsController: nil)
            controller.searchResultsUpdater = self
            controller.hidesNavigationBarDuringPresentation = false
            controller.obscuresBackgroundDuringPresentation = false
            controller.searchBar.sizeToFit()
            // set search Bar covered color, same with tableView's background color.
            controller.searchBar.barTintColor = UIColor(rgb: 0x292f33)

            return controller
            })() // closure, learn it later!!

        navigationItem.searchController = resultSearchController

        // reload the tableView
        self.tableView.reloadData()

    }

/ / Я поставил пользовательский код навигационной панелив AppDelegate.swift для глобального использования.

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Custom Navigation Bar's appearance.
        UINavigationBar.appearance().tintColor = UIColor.white
        UINavigationBar.appearance().barTintColor = UIColor(rgb: 0x55acee)
        UINavigationBar.appearance().isTranslucent = false
        UINavigationBar.appearance().clipsToBounds = false
        // UINavigationBar.appearance().backgroundColor
        UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: UIColor.white, .font: UIFont.boldSystemFont(ofSize: 23)]
        return true
    }

/ / / Обновление, оно дублируется с потоком /12786218/ios-13-uibarbuttonitem-ne-aktiviruetsya-i-perekryvaet-uinavigationbars-pri-ispolzovanii-uisearchcontroller. Кажется, ошибка Apple от iOS 13, а временное исправление - установить hidesNavigationBarDuringPresentation = true.

...