拉刷新不执行刷新功能?
Posted
技术标签:
【中文标题】拉刷新不执行刷新功能?【英文标题】:Pull to refresh not performing refreshing function? 【发布时间】:2016-11-10 05:49:54 【问题描述】:我正在编写一个应用程序并设置了 queryAndAppend 函数,用于查询数据库并将提取的信息附加到一组数组(然后用于遍历表视图中的单元格)。查询函数在viewDidLoad()
中调用时可以正常工作。我想要一个拉动刷新功能来额外调用这些功能(从而更新表格单元格),但它不能正常工作。以下是相关代码:
var refreshControl = UIRefreshControl()
override func viewDidLoad()
super.viewDidLoad()
myQueryandAppend(completion:
self.tableView.reloadData()
)
upComingQueryandAppend(completion:
self.tableView.reloadData()
)
refreshControl = UIRefreshControl()
refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
refreshControl.addTarget(self, action: #selector(MainPageVC.refresh(_:)), for: UIControlEvents.valueChanged)
func refresh(_ sender: AnyObject)
myQueryandAppend(completion:
self.tableView.reloadData()
self.refreshControl.endRefreshing()
)
upComingQueryandAppend(completion:
self.tableView.reloadData()
self.refreshControl.endRefreshing()
)
不完全确定为什么它不工作,因为我在不同的视图控制器(具有不同的查询/追加功能)中进行了非常相似的设置,可以正常使用拉动刷新。
【问题讨论】:
你使用 tableviewcontroller 吗?你能显示 myQueryandAppend 代码吗? 你试过看***.com/questions/24475792/…吗? @Sahil 原来问题在于,因为我没有使用tableViewController
,而是在常规VC中使用tableView
,所以我需要额外的代码行:tableView.addSubview(refreshControl)
.凯文提供的链接帮助很大。
是的。如果您不使用 tableviewcontroller,则需要添加 tableView.addSubview(refreshControl)。
【参考方案1】:
如果类是UIViewController
但不是UITableViewController
,则需要手动将refreshControl
作为子视图添加到tableView
:
tableView.addSubview(refreshControl)
所以,viewDidLoad()
应该是这样的:
override func viewDidLoad()
super.viewDidLoad()
myQueryandAppend(completion:
self.tableView.reloadData()
)
upComingQueryandAppend(completion:
self.tableView.reloadData()
)
refreshControl = UIRefreshControl()
refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
refreshControl.addTarget(self, action: #selector(MainPageVC.refresh(_:)), for: UIControlEvents.valueChanged)
// here is the extra job!
tableView.addSubview(refreshControl)
【讨论】:
【参考方案2】:在 ios 10+ 中,您可以直接将刷新控件分配给 tableview/scrollview 的 .RefreshControl 属性
tableView.RefreshControl = refreshControl
【讨论】:
以上是关于拉刷新不执行刷新功能?的主要内容,如果未能解决你的问题,请参考以下文章