smn*_*mnk 10 uitableview uisearchbar ios swift uisearchcontroller
我想一个"过滤器"或"排序"按钮旁边的添加searchBar内UISearchController.我已经尝试添加UIButton和searchbar进入a UIView并将其设置为my UITableView tableView.tableHeaderView这不起作用,因为tableView.tableHeaderViewget的设置回到了UISearchBar解除控制器的时候.以下是我希望它的外观示例:
Ali*_*mir 10
我可以用几行代码创建一个搜索过滤器.我希望它有所帮助.
*我选择了书签按钮来应用过滤器图标; 因为我已经使用取消按钮进行自定义操作.
首先,您必须委托searchBar来处理书签按钮单击操作.然后你应该设置如下属性.如果要提供自定义位置(默认位置是右侧),则需要setPositionAdjustment.
searchController.searchBar.delegate = self
searchController.searchBar.showsBookmarkButton = true
searchController.searchBar.setImage(UIImage(named: "Sort"), for: .bookmark, state: .normal)
// MARK: You may change position of bookmark button.
//searchController.searchBar.setPositionAdjustment(UIOffset(horizontal: 0, vertical: 0), for: .bookmark)
Run Code Online (Sandbox Code Playgroud)
然后,覆盖VC中的searchBarBookmarkButtonClicked函数.您可以在此方法中处理click事件.
func searchBarBookmarkButtonClicked(_ searchBar: UISearchBar) {
//showAlert, presentVC or whatever you want here
}
此外,如果要在搜索控制器处于活动状态时隐藏书签按钮,则需要在updateSearchResults方法中应用控件.
if searchController.isActive {
searchController.searchBar.showsBookmarkButton = false
} else {
searchController.searchBar.showsBookmarkButton = true
}
Run Code Online (Sandbox Code Playgroud)
当searchController不活动时:
当searchController处于活动状态时:
小智 6
您可以通过在SearchBar旁边添加自己的按钮来保持简单,而不是自定义UISearchBar并使事情变得复杂.
使用为SearchBar 设置No the Shows取消按钮选项
self.searchBar.showsCancelButton = true
Run Code Online (Sandbox Code Playgroud)
要么
取消选中在StoryBoard中显示 SearchBar的取消按钮选项
在SearchBar旁边添加您自己的按钮,如下所示
然后相应地将IBaction添加到按钮并在其中执行操作.
同样在理想情况下,不建议将此视图放在tableview的Header中.如果它高于tableview,那么Apple也会更好.
我会失去搜索控制器,它不提供您真正想要的任何功能,并且您需要提供的附加视图/VC 会增加复杂性/代码重复。
您现有的表视图已经拥有您需要的一切,因为它有数据源。它要么是一个数组,要么是一个 FRC。如果它是一个数组,那么您可以用过滤后的内容替换数组的内容,如果它是一个 FRC,您可以更改谓词。
注意:在数组情况下,有 2 个数组引用,1 个指向包含所有未过滤项目的数组,另一个最初是对同一数组的引用 - 第二个引用用于填充表视图。然后,当您进行过滤时,您将创建一个仅包含过滤后的项目的新数组,并将第二个引用指向该数组。
您无需实现搜索控制器委托方法,而是实现搜索栏委托方法并使用它来触发过滤和重置。
现在您已经摆脱了搜索控制器,您也没有切换表格视图,因此您只有 1 个电视和 1 个标题视图。现在没有理由更改标题视图,一切正常。
| 归档时间: |
|
| 查看次数: |
6076 次 |
| 最近记录: |