Swift - Добавить UIRefreshControl в представление заголовка раздела таблицы - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь добавить элемент управления 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, но он все еще не отображается, только метка.

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Как предположил trungduc, использование представления индикатора активности вместо элемента управления обновлением решило мою проблему - спасибо

0 голосов
/ 15 мая 2018

Существует также простой способ добавления элемента управления обновлением через Интерфейсный конструктор.

Сначала выберите tableViewController в вашей раскадровке, откройте инспектор атрибутов и включите обновление

Please check below image for more clarity

Теперь в вашем 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()
} 

Я думаю, что это можети работать на тебя. Счастливое кодирование

...