ios - 滚动时隐藏/取消隐藏 NavigationItem SearchController
问题描述
我已经在这里呆了 2 天了,我无法让我的 UISearchController/NavigationItem 像它应该的那样工作(在启动时隐藏,向上滚动后显示,向下滚动后隐藏)。它是如此简单,显然除了我之外的每个人都可以做到。这是我想要的样子:http ://blog.eppz.eu/swiftui-search-bar-in-the-navigation-bar/
这真的很令人沮丧,我只想知道是否有人可以指导我完成它或将我引导到我可以下载并迁移到我的应用程序的模板文件。
这是我现在的 viewDidLoad,但我也尝试过使用不同的 UISearchController 组合,但它并没有像我想要的那样工作:
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
tableView.tableHeaderView = searchController.searchBar
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = true
searchController.obscuresBackgroundDuringPresentation = true
definesPresentationContext = true
searchController.searchBar.sizeToFit()
searchController.searchBar.placeholder = "Search Candies"
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = true
}
解决方案
您正在 tableHeaderView 上添加 searchBar。
这对我来说看起来不太好:tableView.tableHeaderView = searchController.searchBar
删除该行并再次测试。
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = true
searchController.obscuresBackgroundDuringPresentation = true
definesPresentationContext = true
searchController.searchBar.placeholder = "Search Candies"
navigationItem.hidesSearchBarWhenScrolling = true
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if navigationItem.searchController == nil {
navigationItem.searchController = searchController
}
}
推荐阅读
- java - java 流:根据抛出的异常进行过滤的优雅方式
- gradle - Intellij 插件中的 java.lang.NoClassDefFoundError
- c# - 在 C# 中调用 Prolog 文件
- angular - Angular 中的 QR 扫描
- gis - 在 onclick 客户端事件上从服务器运行 GDAL/OGR 函数
- excel - 评论按分页符拆分
- javascript - 一页轮播中的两个视频 - Chromium
- c - 分叉后从子管道读取卡在未知位置的读取循环中
- postgresql - 不能在终端中使用 dropdb 命令删除 db posgres?
- ruby-on-rails - rspec match_array 递归?