私のプル・トゥ・リフレッシュ機能は実際に動作しますが、最初のセルのデータは再ロードされません。私はテーブルをリフレッシュする場合は、セルが混在していることを意味します。最初のセルは変更されませんが、新しいセルは、下のセルに示されている最初のセルに新たに来なければなりません。私が閉じると、アプリを開くと、私は順番にデータに到達することができますが、私はリフレッシュするために使用する場合、私は順番にデータを更新することができませんでした。UITableViewの更新が正しく動作しません
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:
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を呼び出します。
func refresh() {
self.page = 1
data_request()
self.refresher.endRefreshing()
}
たびに私は、テーブルには、それがdata_request()
FUNCに入るリフレッシュを引くが、それは、テーブルを更新しません。
request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData
:
ご注文はいつでも可能ですデータソースの順序を反映します。 reloadDataの直前にブレークポイントを置き、データソースを参照してください。あなたの問題はそこにあるはずです。 –
データの読み込みとテーブルビューの再読み込みの間に 'return'を3回呼び出します。あなたはそれらの 'return'ステートメントのどれかを打っていますか?デバッガを使用します。これはそれのためのものです。コードをステップ実行し、実際に何が起こっているかを確認します。 – rmaddy