簡體   English   中英

在Swift 4中添加帶有計時器的導航欄刷新按鈕

[英]Adding a navigation bar refresh button with timer in swift 4

我正在嘗試添加一個導航欄刷新按鈕來更新來自JSON的表格視圖內容,此外,如果用戶未按下刷新按鈕並將其更改為,我希望表格視圖每5分鍾自動更新一次。是活動指示器,以使正在使用表視圖更新數據時正在更新的用戶

刷新按鈕圖像

我的刷新按鈕IBAction代碼:

@IBAction func refreshButton(_ sender: Any) {

    self.getCoinData()
    self.coinTableView.reloadData()
}

迅捷4+

創建計時器並在完成Web服務時顯示重新加載圖標

class ViewController: UIViewController {

    var timer: Timer!
    var refreshBarButtonActivityIndicator: UIBarButtonItem!
    var refreshBarButton: UIBarButtonItem!
    override func viewDidLoad() {
        super.viewDidLoad()
        barItemSetUp()
    }
    func barItemSetUp() {
        ///SettingReloadButton
        let image = UIImage(named: "refresh-25")?.withRenderingMode(.alwaysOriginal)
        refreshBarButton = UIBarButtonItem(image: image, style: .plain, target: self, action: nil)
        ///Setting activity Indicator
        let activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView.init(activityIndicatorStyle: .gray)
        refreshBarButtonActivityIndicator = UIBarButtonItem(customView: activityIndicator)
        activityIndicator.startAnimating()
        toogleIndicator()
    }
   deinit {    
     timer?.invalidate()
   }
    func toogleIndicator() {
        // 5 minutes = 300 seconds //write here 300
        timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(refreshNow), userInfo: nil, repeats: true)
    }

    @objc func refreshNow() {
        //here i am creating delay for sample purpose
        //here write your webservice code on completion of webservice change bar button item
        self.navigationItem.rightBarButtonItem = refreshBarButtonActivityIndicator
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2) {
            self.navigationItem.rightBarButtonItem = self.refreshBarButton
        }
    }
}

輸出:-

在此處輸入圖片說明

首先添加計時器,該計時器每5分鍾刷新一次數據。 在計時器,您添加Web服務。

var timer = Timer()
func runTimer(){
    timer = Timer.scheduledTimer(timeInterval: 5, target: self,   selector: (#selector(self.updateTimer)), userInfo: nil, repeats: true)
}
func updateTimer() {
    self.getCoinData()
    self.coinTableView.reloadData()
}
override func viewWillAppear(_ animated: Bool){
    runTimer()      
}

要每隔5分鍾重新加載UITableView ,您需要安排一個Timer ,每5分鍾執行一次代碼塊,即

var timer: Timer?

override func viewDidLoad()
{
    super.viewDidLoad()
    self.timer = Timer.scheduledTimer(withTimeInterval: 300, repeats: true, block: {[weak self] (tt) in
        self?.getCoinData()
        self?.coinTableView.reloadData()
    })
    timer?.fire()
}

deinit
{
    timer?.invalidate()
}

您可以根據需要更改時間間隔。 您需要指定時間間隔(以秒為單位)。

暫無
暫無

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

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