我正在尝试在我的表 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)继承了 UITableViewControllerUITableViewController 已经像这样声明了 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/

10-11 07:55