我正在尝试在我的表 View 应用程序中实现拉动刷新。我一直在环顾人们的例子,我发现这几乎是它的要点:
var refreshControl:UIRefreshControl!
override func viewDidLoad()
{
super.viewDidLoad()
self.refreshControl = UIRefreshControl()
self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
self.refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(refreshControl)
}
func refresh(sender:AnyObject)
{
// Code to refresh table view
}
然而,我能找到的唯一例子是不久前的,我知道从那时起语言已经发生了很大变化!当我尝试使用上面的代码时,在我的 refreshControl 声明旁边出现以下错误:
Cannot override with a stored property 'refresh control'
在阅读其他示例之前,我的第一个想法是我必须像这样声明变量:
var refreshControl:UIRefreshControl = UIRefreshControl()
就像我对其他一些变量所做的那样,但我想不是。
任何想法是什么问题?
最佳答案
我猜你的类(class)继承了 UITableViewController
。 UITableViewController
已经像这样声明了 refreshControl
属性:
@availability(iOS, introduced=6.0)
var refreshControl: UIRefreshControl?
您不需要覆盖它。只需摆脱您的
var
声明并分配给继承的属性。由于继承的属性是
Optional
,你需要使用 ?
或 !
来解包它:refreshControl = UIRefreshControl()
refreshControl!.attributedTitle = NSAttributedString(string: "Pull to refresh")
refreshControl!.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
tableView.addSubview(refreshControl!)
关于ios - 在 Swift 中拉动刷新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26109581/