簡體   English   中英

Swift-將UIRefreshControl添加到表的節標題視圖

[英]Swift - Add UIRefreshControl to section header view of table

我試圖根據一個標志將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)
     }
     ...
}

我也嘗試過view.refreshControl = refreshCtrl但是它仍然沒有顯示,只有標簽。

還有一種通過“界面”構建器添加刷新控件的簡單方法。

首先,在情節提要中選擇tableViewController,打開屬性檢查器,然后啟用刷新

請檢查下圖以更清楚

現在在您的viewdidLoad中添加以下代碼:

self.refreshControl?.addTarget(self, action: #selector(ViewController.refreshLogic(_:)), for: UIControlEvents.valueChanged)

最后,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()
} 

我認為這也可以為您服務。 快樂編碼

正如trungduc建議的那樣,使用活動指示器視圖而不是刷新控件解決了我的問題-謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM