当用户在tableViewController
中丢失互联网连接时,我设置了所有错误处理代码。假设用户退出单元格然后返回,ProgressHUD
(自定义活动指示器)将从viewDidAppear
弹出,并且不会显示任何单元格,因为它们没有任何wifi。在那之后让我们说用户重新获得连接,但是tableView
仍然是空的,我在导航栏中有一个按钮,它将从UIApplicationDidBecomeActive
重新加载数据,但唯一的问题是tableView没有得到更新,仍然没有单元格出现。
@IBAction func tableReload(_ sender: Any) {
if reach.connection == .wifi || reach.connection == .cellular {
NotificationCenter.default.addObserver(self, selector: #selector(reloadTable(note:)), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil)
}else {
ProgressHUD.showError("Can not reload if there is no internet connection")// activity indicator from a library
}
}
@objc func reloadTable(note: NSNotification) {
let reachability = note.object as! Reachability
if reachability.connection == .wifi || reachability.connection == .cellular{
ProgressHUD.showSuccess("Wifi is good")
self.tableView.isScrollEnabled = true
self.tableView.isUserInteractionEnabled = true
self.tableView.reloadData()
}else {
tableView.isScrollEnabled = false
tableView.isUserInteractionEnabled = false
ProgressHUD.show("Can not reload with no internet connection")
}
}
答案 0 :(得分:0)
@objc func reloadTable(note: NSNotification) {
let reachability = note.object as! Reachability
if reachability.connection == .wifi || reachability.connection == .cellular{
ProgressHUD.showSuccess("Wifi is good")
self.tableView.isScrollEnabled = true
self.tableView.isUserInteractionEnabled = true
self.fetchData() // call fetch Method
}else {
tableView.isScrollEnabled = false
tableView.isUserInteractionEnabled = false
ProgressHUD.show("Can not reload with no internet connection")
}
}
func fetchData() {
// Assign data to TableView's DataSource
// Now reload the TableView
}
答案 1 :(得分:0)
重新获得互联网连接更新数据模型(要在表格中显示的数据)后,请致电tableView.reloadData()
答案 2 :(得分:0)
简单重新加载无法恢复您的数据。从服务器获取数据(即:调用API),如果成功加载数组/字典以将数据传递给tableViewDataSource,然后重新加载tableView数据....!
示例:
Alamofire.request(urlString).responseJSON { (response) in
if response.result.isSuccess
{
completion(response.result.value as AnyObject?, "", true)
// pass values to array/Dictionary
let restDict = response.result
// reload TableView
tableView.reloadData()
}
else
{
completion(nil, "", false)
}
}