我有一个tableView
。我设置了有关searchController的所有设置(大导航栏中的搜索栏)-(滚动tableview时打开/关闭)。我实现了rightBarButtonItem
,名称为'Close'。我想以编程方式隐藏/关闭tableView和搜索栏。我可以隐藏tableView但不能隐藏SearchBar。
当我为isHidden
做SearchBar
时,大导航栏不会缩小到正常大小。
图片1.通过向下滚动打开搜索栏。
图片2。未通过编程隐藏大型导航栏(此处未实现searchar.isHidden)
谢谢。
我之前尝试过,但是没有运行
tableView.setContentOffset(.zero, animated: false)
navigationController?.navigationBar.prefersLargeTitles = false
答案 0 :(得分:1)
我试图找到一种隐藏搜索栏的正确方法,但没有找到。但是我发现了一种解决方法,可以隐藏您的搜索栏,因为更改内容会使您的表格视图偏移。
您可以尝试使用此功能隐藏表格视图和搜索栏。
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)
}
答案 1 :(得分:1)
只需尝试以下操作:
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
}