【发布时间】:2020-04-09 04:32:11
【问题描述】:
我使用刷新控制器。当我在刷新动画完全结束后点击标签栏项目时效果很好。但是如果我在动画完成之前很快点击栏项目,它将被冻结。我尝试在 viewDidApper 中使用 refreshControl.endRefreshing()。我也尝试在 viewWillDisappear 中使用 refreshControl.endRefreshing()。这个错误仍然发生。以下是我的代码和快照。
快照:https://imgur.com/a/UNvQbA8
演示视频:https://youtu.be/cZMurwiwfjI
let refreshControl: UIRefreshControl = UIRefreshControl()
@IBOutlet weak var myScrollView: UIScrollView!
@IBOutlet weak var noDataView: UIView!
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib.init(nibName: "MessageListCell", bundle: nil), forCellReuseIdentifier: "MessageListCell")
tableView.delegate = self
tableView.dataSource = self
refreshControl.addTarget(self, action: #selector(refresh), for: UIControl.Event.valueChanged)
self.tableView.isHidden = true
self.myScrollView.isHidden = false
}
我把 refreshControl.endRefreshing() 放在这里。好像不行。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.refreshControl.endRefreshing()
if !oneReload {
getList()
oneReload = true
}
}
我还尝试在添加子视图之前放置 refreshControl.endRefreshing()。还是不行。
private func getList(){
if self.viewData.count > 0{
self.tableView.addSubview(self.refreshControl)
self.tableView.isHidden = false
self.myScrollView.isHidden = true
self.tableView.reloadData()
}else{
self.myScrollView.addSubview(self.refreshControl)
self.myScrollView.isHidden = false
self.tableView.isHidden = true
}
}
@objc func refresh(){
refreshControl.endRefreshing()
self.getList()
}
我认为这会发生,因为视图控制器在更改选项卡栏选定视图之前已冻结。下次我回到视图。它显示冻结动画。我可以解决这个问题吗?请帮忙。谢谢。
【问题讨论】:
-
你是否尝试将它放在 viewDidDisappear 中
-
@jbiser361 是的,我尝试将 endRefreshing() 放在 viewDidDisappear 中。问题仍然存在。我更新了一个演示视频。请帮忙。谢谢。
-
尝试隐藏
标签: swift uitabbarcontroller uirefreshcontrol