我的UIViewController中有一个UITableView。我正在尝试设置UIRefreshControl pull to refresh功能。下面是我的代码。
// Within Class Itself
lazy var refreshControl: UIRefreshControl = {
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action:
#selector(MainViewController.refreshData),
for: .valueChanged)
refreshControl.tintColor = UIColor.darkGray
return refreshControl
}()
// Within viewDidLoad
if #available(iOS 10.0, *) {
myTableView.refreshControl = refreshControl
} else {
myTableView.addSubview(refreshControl)
}但每当我尝试在模拟器中运行它并将其向下拖动到表视图上时,什么都不会发生,也不会显示任何内容。这就像是拉动刷新的东西没有添加到表视图中。
我该如何解决这个问题呢?
发布于 2017-10-30 14:04:10
据我所知,这是因为您使用延迟初始化声明了refreshControl。并且您正在从外部将refreshControl添加到tableview。
Lazy会延迟你的refreshControl初始化,但在此之前,refreshControl会被添加到tableview中,但这里的refreshControl是空的。所以它不起作用。
尝试删除惰性,并直接初始化(类似于下面给出的内容)。我希望它能起作用。
var refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action:
#selector(MainViewController.refreshData),
for: .valueChanged)
refreshControl.tintColor = UIColor.darkGray
// Within viewDidLoad
if #available(iOS 10.0, *) {
myTableView.refreshControl = refreshControl
} else {
myTableView.addSubview(refreshControl)
}https://stackoverflow.com/questions/47008271
复制相似问题