我在我的表视图中使用一个UIRefreshControl来提取新数据。但是,当我定义控件时,下面会显示错误。我搜索了一段时间,但没有发现任何有用的东西。
我使用Xcode版本9.2 (9C40b),swift4,IOS11.2
无法覆盖“refreshControl”类型的可变属性“UIRefreshControl?”具有协变类型'UIRefreshControl‘
var refreshControl = UIRefreshControl()

发布于 2018-01-17 11:05:15
如果您想要定义另一个控件,那么更改名称..。refreshControl是自iOS6 10/iOS6 6以来的一种UIScrollView/UITableViewController ivar。您正在尝试重新定义它,这就是导致错误的原因。或者你可以使用提供的一个当然。
你可能是指像self.refreshControl = UIRefreshControl()这样的人
发布于 2020-03-12 11:44:01
迅速4/5
override func viewDidLoad() {
super.viewDidLoad()
self.refreshControl = UIRefreshControl()
self.refreshControl!.attributedTitle = NSAttributedString(string: "Pull to refresh")
self.refreshControl!.addTarget(self, action: #selector(refresh(sender:)), for: UIControl.Event.valueChanged)
}
@objc func refresh(sender:AnyObject) {
// Code to refresh table view
self.refreshControl!.endRefreshing()
}发布于 2018-05-03 19:57:24
编译器阻止您在子类中指定比超类设置的更严格的要求。
假设编译器允许您用非Optional类型覆盖一个Optional属性。如果有人这样做会发生什么:
let tableView: UITableView = CoolTableViewSubclass()
tableView.refreshControl = nil // but my overridden property can't be nil!作为子类,当有人把您当作超类对待时,您需要正常工作。所以编译器在这种情况下会阻止您,因为它已经可以判断您正在违反此规则。
https://stackoverflow.com/questions/48299533
复制相似问题