我试图在视图加载时显示一个刷新控件,以显示我从Parse获取数据。应用程序运行时,刷新控件可以正常工作,但我无法从应用程序的任何位置以编程方式启动它。 这是似乎无法运行的代码:
override func viewDidAppear(animated: Bool) {
self.refresher.beginRefreshing()
}
这不仅不会运行,而且应用程序中的代码会更改刷新控件的属性。当我在应用程序中使用此代码并显示用户交互的更新时,刷新控件不会像通常那样具有其属性标题,也不会运行它应该的代码。
答案 0 :(得分:5)
我需要在setContentOffset和self.refreshControl?.sendActions(for: .valueChanged)
调用之间添加延迟。没有延迟,refreshControl的attributesTitle将无法呈现。
这适用于iOS 10(Swift 3):
self.tableView.setContentOffset(CGPoint(x:0, y:self.tableView.contentOffset.y - (self.refreshControl!.frame.size.height)), animated: true)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2, execute: {
self.refreshControl?.sendActions(for: .valueChanged)
})
答案 1 :(得分:4)
这是一个适用于10.3的扩展程序:
extension UIRefreshControl {
func refreshManually() {
if let scrollView = superview as? UIScrollView {
scrollView.setContentOffset(CGPoint(x: 0, y: scrollView.contentOffset.y - frame.height), animated: false)
}
beginRefreshing()
sendActions(for: .valueChanged)
}
}