【发布时间】:2016-04-25 16:50:40
【问题描述】:
我的拉动刷新功能确实有效,但不会重新加载数据。如果我关闭并打开应用程序,我可以访问数据,但如果我使用 pull 刷新,我无法加载数据。
var page : Int = 1
var refresher: UIRefreshControl!
override func viewDidLoad() {
super.viewDidLoad()
refresher = UIRefreshControl()
refresher.attributedTitle = NSAttributedString(string: "Pull to refresh")
refresher.addTarget(self, action: #selector(newPollsTableViewController.refresh), forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(refresher)
data_request()
}
这是我的 data_request() 函数:
func data_request(){
let user_id = Data[0].valueForKey("user_id") as? String!
let url:NSURL = NSURL(string: "http://..../perspective/\(user_id!)/page/"+"\(page)" )!
let session = NSURLSession.sharedSession()
self.page = self.page + 1
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "GET"
request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData
let task = session.dataTaskWithRequest(request) {
(let data, let response, let error) in
guard let _:NSData = data, let _:NSURLResponse = response where error == nil else {
print("error")
return
}
var json: AnyObject?
do {
json = try NSJSONSerialization.JSONObjectWithData(data!, options: [])
}
catch {
return
}
guard let data_array = json as? NSArray else {
return
}
for i in 0..<data_array.count
{
if let add = data_array[i] as? NSDictionary
{
self.obj.append(Obj(data:add))
}
}
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
})
}
task.resume()
}
当我拉动刷新表时,我调用了我的刷新函数。
func refresh() {
self.page = 1
data_request()
self.refresher.endRefreshing()
}
每次我拉刷新表时,它都会进入 data_request() 函数,但不会更新表。
【问题讨论】:
-
您的代码是否到达了对
reloadData的调用,或者它是否命中了return语句之一? -
@rmaddy 它到达了 reloadData
-
如果删除
() -> Void会发生什么? -
所以你的代码到达
reloadData但数据没有重新加载? -
是的,但是在关闭和打开后显示的应用数据
标签: ios uitableview cocoa-touch nsurlsession