Скрыть панель поиска контроллера навигации и открыть большой заголовок программно - PullRequest
0 голосов
/ 07 октября 2018

У меня есть tableView.Я установил все настройки для searchController (панель поиска в большой панели навигации) - (открывать / закрывать при прокрутке таблицы).Я реализовал rightBarButtonItem, который называется «Закрыть».Я хочу, чтобы скрыть / закрыть tableView и панель поиска с помощью программного обеспечения.Я могу скрыть tableView, но не SearchBar.

Когда я делаю isHidden для SearchBar, Большая панель навигации не сжимается до нормального размера.

Рис 1. Открыта панель поиска с прокруткой вниз.

enter image description here

Рис 2. Большая скрытая панель навигации с программным обеспечением (searchar.isH здесь не реализовано)

enter image description here

Заранее спасибо.

Я пробовал это раньше, но не запускался

tableView.setContentOffset(.zero, animated: false)
navigationController?.navigationBar.prefersLargeTitles = false

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Просто попробуйте это:

 navigationItem.searchController = nil

Это весь мой тестовый код:

@IBOutlet weak var tableView: UITableView!

@IBOutlet weak var leftBarButtonItem: UIBarButtonItem!

var isHidden = false

var searchController: UISearchController {

    let search = UISearchController(searchResultsController: nil)

    search.searchBar.placeholder = "hello world"

    search.obscuresBackgroundDuringPresentation = false

    return search
}


override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationItem.title = "Test"

    tableView.delegate = self

    tableView.dataSource = self

    showSearchController()
}

@IBAction func isHiddenAction(_ sender: UIBarButtonItem) {
    isHidden = !isHidden

    self.tableView.isHidden = isHidden

    if isHidden {
        leftBarButtonItem.title = "Show"
        hiddenSearchController()

    } else {
        leftBarButtonItem.title = "Hidden"
        showSearchController()
    }
}

func hiddenSearchController() {
    navigationItem.searchController = nil
}

func showSearchController() {

    navigationItem.searchController = searchController

    navigationItem.hidesSearchBarWhenScrolling = true

    definesPresentationContext = true
}

screenShots

0 голосов
/ 12 октября 2018

Я пытался найти правильный способ скрыть панель поиска, но не нашел.Но я нашел обходной путь, чтобы скрыть панель поиска, которая изменяет содержимое, смещая представление таблицы.

Вы можете попробовать эту функцию, чтобы скрыть представление таблицы и строку поиска.

func hide() {
    tableView.isHidden = true
    let point = tableView.contentOffset
    let searchBarFrame = self.navigationItem.searchController?.searchBar.frame
    let newPoint = CGPoint(x: point.x, y: point.y + searchBarFrame!.height)
    tableView.setContentOffset(newPoint, animated: true)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...