2017-01-17 24 views
-6

ビューコントローラーを読み込んで設定したときにデータを取得しようとしているので、後でコードで使用することができますが、値は更新されません。 CountData値は、コードの一番下に3する必要がありますが、それはAlamofire要求が非同期であるとして、あなたは、あなたのテーブルのためのreloadDataを呼び出す必要がありますSwift 3グローバル変数の値を設定

import UIKit 
import Alamofire 

class FooController: UIViewController, UITableViewDataSource { 

    var CountData 

    override func viewDidLoad() { 

     super.viewDidLoad(); 

     Alamofire.request("http://foo:8080/joke.php").responseJSON{ response in 
      if let JSON = response.result.value as? [String: String] { 

      } 
      //!!SET DATA HERE!! 
      self.CountData = 3 
     } 

     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 



    func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 



    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     //!!USE IT HERE!! 
      return CountData; 
} 
+0

self.CountData = 3後にこのラインリロードテーブルビュー再び –

答えて

0

ではありません。

今のところ、あなたはあなたの

var CountData = 3 

を初期化することができますし、設定応答CountDataを得るとき、あなたはしたいし、次に呼び出す

self.CountData = 5  
yourTableView.reloadData() 
+1

確かにカウントをハードコードしない方が良いでしょうか?返されたデータの量を知っているときにカウントを設定し、tableViewをリロードします。 – Russell

関連する問題