2016-05-02 27 views
0

私のプル・トゥ・リフレッシュ機能は実際に動作しますが、最初のセルのデータは再ロードされません。私はテーブルをリフレッシュする場合は、セルが混在していることを意味します。最初のセルは変更されませんが、新しいセルは、下のセルに示されている最初のセルに新たに来なければなりません。私が閉じると、アプリを開くと、私は順番にデータに到達することができますが、私はリフレッシュするために使用する場合、私は順番にデータを更新することができませんでした。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 

+0

ご注文はいつでも可能ですデータソースの順序を反映します。 reloadDataの直前にブレークポイントを置き、データソースを参照してください。あなたの問題はそこにあるはずです。 –

+0

データの読み込みとテーブルビューの再読み込みの間に 'return'を3回呼び出します。あなたはそれらの 'return'ステートメントのどれかを打っていますか?デバッガを使用します。これはそれのためのものです。コードをステップ実行し、実際に何が起こっているかを確認します。 – rmaddy

答えて

0

奇妙なことは、データソースに起こっているから、あなたのcaching policy

を変更しようと

request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData 
+0

私はself.obj.append(Obj(data:add))の直前にself.obj.removeAll()を追加して解決しようとします。 – tmac99

+0

良いニュース、あなたには注意してください:) –

0

私はちょうどself.obj.append(Obj(data:add))

self.obj.removeAll()を追加することで解決しました
関連する問題