Swift 搜索时停用UIRefreshControl
我在TableView上实现了UIRefreshControl,此外,我还添加了一个带有搜索栏的searchController 搜索和拉刷新都可以很好地工作,我唯一要做的就是在searchController处于活动状态时如何停用“拉刷新”功能Swift 搜索时停用UIRefreshControl,swift,uisearchcontroller,uirefreshcontrol,Swift,Uisearchcontroller,Uirefreshcontrol,我在TableView上实现了UIRefreshControl,此外,我还添加了一个带有搜索栏的searchController 搜索和拉刷新都可以很好地工作,我唯一要做的就是在searchController处于活动状态时如何停用“拉刷新”功能 我试图实现这个解决方案,但不知何故,这对我来说并不奏效 使您的viewcontroller符合UISearchBarDelegate class ViewController: UIViewController, UISearchBarDelegate
我试图实现这个解决方案,但不知何故,这对我来说并不奏效 使您的viewcontroller符合
UISearchBarDelegate
class ViewController: UIViewController, UISearchBarDelegate
并实现了其中的两种方法
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
self.removeRefreshControl()
}
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
self.initRefreshControl()
}
在每个方法中,调用函数来设置和删除UIRefreshControl
func initRefreshControl() {
self.refreshControl = UIRefreshControl()
self.refreshControl?.addTarget(self, action: #selector(ViewController.refreshData), for: .valueChanged)
self.tableView.refreshControl = self.refreshControl
}
func removeRefreshControl() {
self.refreshControl = nil
}
完整的代码是:
class ViewController: UIViewController, UISearchBarDelegate {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var searchBar: UISearchBar!
var refreshControl: UIRefreshControl?
override func viewDidLoad() {
super.viewDidLoad()
self.initRefreshControl()
}
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
self.removeRefreshControl()
}
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
self.initRefreshControl()
}
func initRefreshControl() {
self.refreshControl = UIRefreshControl()
self.refreshControl?.addTarget(self, action: #selector(ViewController.refreshData), for: .valueChanged)
self.tableView.refreshControl = self.refreshControl
}
func removeRefreshControl() {
self.refreshControl = nil
}
@objc func refreshData() {
....
....
self.refreshControl?.endRefreshing()
}
}
这应该可以工作。您希望不调用刷新控制目标函数还是隐藏刷新控制我希望两者都有。UIRefreshcontrol不应工作,也不应显示。