【问题标题】:Deactivate UIRefreshControl while searching搜索时停用 UIRefreshControl
【发布时间】:2018-04-07 13:15:56
【问题描述】:

我在 TableView 上实现了 UIRefreshControl,此外,我添加了一个带有 searchBar 的 searchController。

搜索以及拉动刷新工作得非常好,我唯一苦苦挣扎的是如何在 searchController 处于活动状态时停用“拉动刷新”功能。

我尝试实施this 解决方案,但不知何故这对我不起作用。

【问题讨论】:

  • 是不调用刷新控件目标函数还是隐藏刷新控件
  • 我想要两者兼得。 UIRefresh 控件不应该工作,也不应该显示出来。

标签: swift uisearchcontroller uirefreshcontrol


【解决方案1】:

让你的视图控制器符合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()
    }
}

这应该可行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    相关资源
    最近更新 更多