Swift - 将UIRefreshControl添加到表的节头视图中

pho*_*bus 0 uitableview ios uirefreshcontrol swift

我试图根据标志添加一个UIRefresh控件到节头表,但它没有显示,有人可以看到原因吗?

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = UIView()
    ...
    let textAttribs = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: UIFont(name: "Arial", size: 16.0)!]
    if appsAreGettingInstalled {  
            let titleString = NSAttributedString(string: "Apps are getting installed", attributes: textAttribs)
            let lbl = UILabel(frame: CGRect(x: 10, y: 0, width: tableView.bounds.size.width - 20, height: 40))
            lbl.attributedText = titleString

            let refreshCtrl = UIRefreshControl()
            refreshCtrl.beginRefreshing()

            let view = UIScrollView(frame: CGRect(x: 10, y: 50, width: tableView.bounds.size.width - 20, height: 40))
            view.addSubview(refreshCtrl)
            view.addSubview(lbl)

            headerView.addSubview(view)
     }
     ...
}
Run Code Online (Sandbox Code Playgroud)

我也试过view.refreshControl = refreshCtrl但它仍然没有显示,只有标签.

Raj*_*har 5

还有一种通过"界面"构建器添加刷新控制的简单方法.

首先,在故事板中选择tableViewController,打开属性检查器,然后启用刷新

请查看下图以获得更清晰的信息

现在在viewdidLoad中添加以下代码:

self.refreshControl?.addTarget(self, action: #selector(ViewController.refreshLogic(_:)), for: UIControlEvents.valueChanged)
Run Code Online (Sandbox Code Playgroud)

最后,refreshLogic函数可能如下所示:

func refreshLogic(refreshControl: UIRefreshControl) {

  // Insert your logic here do some reloading of data and update the table view's data source

  // reload your table

   self.yourTableViewObj.reloadData
   refreshControl.endRefreshing()
} 
Run Code Online (Sandbox Code Playgroud)

我认为这对你也有用.快乐的编码