gpt4 book ai didi

ios - 在 swift 4 中添加带计时器的导航栏刷新按钮

转载 作者:搜寻专家 更新时间:2023-11-01 06:14:28 28 4
gpt4 key购买 nike

我正在尝试添加一个导航栏刷新按钮来更新来自 JSON 的 TableView 内容,此外,如果用户没有按下刷新按钮并更改,我希望我的 TableView 每 5 分钟自动更新一次按钮是一个事件指示器,让正在更新的用户在 TableView 更新数据时

refresh button image

我的刷新按钮 IBAction 代码:

@IBAction func refreshButton(_ sender: Any) {

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

最佳答案

swift 4+

创建 Timer 并在网络服务完成时显示重新加载图标

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
}
}
}

输出:-

enter image description here

关于ios - 在 swift 4 中添加带计时器的导航栏刷新按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48075867/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com