Rob*_*bin 7 iphone uitableview uisearchbar ios swift
我想要实现UISearchBar我的tableView.
我的代码(在viewDidLoad中):
self.searchController = UISearchController(searchResultsController: nil)
self.searchController.searchResultsUpdater = self
self.searchController.delegate = self
self.searchController.searchBar.delegate = self
self.searchController.searchBar.autocapitalizationType = .None
self.searchController.searchBar.autocorrectionType = .No
self.searchController.hidesNavigationBarDuringPresentation = false
self.searchController.dimsBackgroundDuringPresentation = false
self.tableView.tableHeaderView = self.searchController.searchBar
Run Code Online (Sandbox Code Playgroud)
当我点击它时searchBar,这个移动到顶部,就像它想要隐藏navigationBar:


我在很多帖子上搜索了答案,但没有任何效果.我想禁用此动画,以便searchBar不会移动.
lba*_*osa 27
你应该能够通过设置来防止这种情况:
self.searchController.hidesNavigationBarDuringPresentation = false
Run Code Online (Sandbox Code Playgroud)
UISearchController当您开始搜索时,可以将其视为模态呈现。如果您进行了常规UINavigationController设置,则此方法会很好用,但是在像您这样的更“自定义”的用户界面中,您可能会遇到诸如搜索控制器附加到错误视图等问题。
我建议不要UISearchController在您的情况下使用,而使用UISearchBar其余的界面单独初始化(可能在情节提要中?),然后手动进行搜索。如果您不能简单地过滤内容,UISearchBarDelegate请实施并UITableView为搜索结果添加自己的内容。
尽管您看起来像一个tableViewvar-您可以简单地添加另一个属性,类似于用作a的属性,然后在其中UITableViewDataSource存储过滤后的数据。因此,只要您有东西,UISearchBar只要在重新加载表视图数据时使用过滤数据源即可。例如:
var data: [String]
var filteredData: [String]
Run Code Online (Sandbox Code Playgroud)
然后filteredData在中使用UITableViewDataSource:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return filteredData.count
}
...
Run Code Online (Sandbox Code Playgroud)
然后在中执行以下操作UISearchBarDelegate:
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
// Filter the data you have. For instance:
filteredData = data.filter({$0.rangeOfString(searchText).location != NSNotFound})
tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6294 次 |
| 最近记录: |