使用数组

时间:2015-06-18 13:25:29

标签: ios swift uitableview swifty-json

我试图将一个Rest调用的结果用作我的TableView的输入。 我有一个名为GamesList [String]的数组,它在viewDidLoad()函数中合成。这是viewDidLoad()函数:

override func viewDidLoad() {
    super.viewDidLoad()

    getState() { (json, error) -> Void in
        if let er = error {
            println("\(er)")
        } else {
            var json = JSON(json!);
            print(json);

            let count: Int = json["games"].array!.count
            println("found \(count) challenges")

            for index in 0...count-1{
                println(index);
                self.GamesList.append(json["games"][index]["game_guid"].string!);
            }
        }
    }
}

问题是填充TableView的函数在我的GamesList数组填满之前执行。这些是填充TableView的函数:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return GamesList.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier("Game", forIndexPath: indexPath) as! UITableViewCell
    cell.textLabel?.text = GamesList[indexPath.row]
    cell.detailTextLabel?.text = GamesList[indexPath.row]
    return cell
}

如何在填充数组后强制表填满(刷新)?

1 个答案:

答案 0 :(得分:1)

在追加您的值后使用self.tableView.reloadData()

 getState() { (json, error) -> Void in
        if let er = error {
            println("\(er)")
        } else {
            var json = JSON(json!);
            print(json);

            let count: Int = json["games"].array!.count
            println("found \(count) challenges")

            for index in 0...count-1{
                println(index);
                self.GamesList.append(json["games"][index]["game_guid"].string!);
            }
            dispatch_async(dispatch_get_main_queue()) {
                self.tableView.reloadData()
            }
        }
    }